@@ -631,15 +631,22 @@ describe('codec', () => {
631
631
assert ( decoded [ 0 ] instanceof codec . Int ) ;
632
632
} ) ;
633
633
634
- it ( 'should decode STRUCT and inner members' , ( ) => {
634
+ it ( 'should decode object STRUCT value and inner members' , ( ) => {
635
635
const value = {
636
- fieldName : '1' ,
636
+ keys : 1 ,
637
+ fieldName : '2' ,
637
638
} ;
638
639
639
640
const decoded = codec . decode ( value , {
640
641
code : google . spanner . v1 . TypeCode . STRUCT ,
641
642
structType : {
642
643
fields : [
644
+ {
645
+ name : 'keys' ,
646
+ type : {
647
+ code : google . spanner . v1 . TypeCode . JSON ,
648
+ } ,
649
+ } ,
643
650
{
644
651
name : 'fieldName' ,
645
652
type : {
@@ -650,11 +657,55 @@ describe('codec', () => {
650
657
} ,
651
658
} ) ;
652
659
653
- const expectedStruct = new codec . Struct ( {
654
- name : 'fieldName' ,
655
- value : new codec . Int ( value . fieldName ) ,
660
+ const expectedStruct = new codec . Struct (
661
+ {
662
+ name : 'keys' ,
663
+ value : value . keys ,
664
+ } ,
665
+ {
666
+ name : 'fieldName' ,
667
+ value : new codec . Int ( value . fieldName ) ,
668
+ }
669
+ ) ;
670
+
671
+ assert ( decoded instanceof codec . Struct ) ;
672
+ assert . deepStrictEqual ( decoded , expectedStruct ) ;
673
+ } ) ;
674
+
675
+ it ( 'should decode array STRUCT value and inner members' , ( ) => {
676
+ const value = [ '1' , '2' ] ;
677
+
678
+ const decoded = codec . decode ( value , {
679
+ code : google . spanner . v1 . TypeCode . STRUCT ,
680
+ structType : {
681
+ fields : [
682
+ {
683
+ name : 'keys' ,
684
+ type : {
685
+ code : google . spanner . v1 . TypeCode . JSON ,
686
+ } ,
687
+ } ,
688
+ {
689
+ name : 'fieldName' ,
690
+ type : {
691
+ code : google . spanner . v1 . TypeCode . INT64 ,
692
+ } ,
693
+ } ,
694
+ ] ,
695
+ } ,
656
696
} ) ;
657
697
698
+ const expectedStruct = new codec . Struct (
699
+ {
700
+ name : 'keys' ,
701
+ value : JSON . parse ( value [ 0 ] ) ,
702
+ } ,
703
+ {
704
+ name : 'fieldName' ,
705
+ value : new codec . Int ( value [ 1 ] ) ,
706
+ }
707
+ ) ;
708
+
658
709
assert ( decoded instanceof codec . Struct ) ;
659
710
assert . deepStrictEqual ( decoded , expectedStruct ) ;
660
711
} ) ;
0 commit comments