@@ -47,22 +47,61 @@ describe('ContractAnalyzer - Multi-File with Schema', () => {
47
47
{
48
48
name : 'getPoints' ,
49
49
params : [ ] ,
50
- returnSchema : { type : 'array' , items : { } } ,
50
+ returnSchema : {
51
+ type : 'array' ,
52
+ items : {
53
+ type : 'object' ,
54
+ properties : {
55
+ x : { type : 'number' } ,
56
+ y : { type : 'number' } ,
57
+ } ,
58
+ required : [ 'x' , 'y' ] ,
59
+ } ,
60
+ } ,
51
61
} ,
52
62
] ) ;
53
63
expect ( result . mutations ) . toEqual ( [
54
64
{
55
65
name : 'addPoint' ,
56
- params : [ { name : 'point' , schema : { } } ] ,
66
+ params : [
67
+ {
68
+ name : 'point' ,
69
+ schema : {
70
+ type : 'object' ,
71
+ properties : {
72
+ x : { type : 'number' } ,
73
+ y : { type : 'number' } ,
74
+ } ,
75
+ required : [ 'x' , 'y' ] ,
76
+ } ,
77
+ } ,
78
+ ] ,
57
79
returnSchema : { } ,
58
80
} ,
59
81
{
60
82
name : 'movePoint' ,
61
83
params : [
62
84
{ name : 'index' , schema : { type : 'number' } } ,
63
- { name : 'delta' , schema : { } } ,
85
+ {
86
+ name : 'delta' ,
87
+ schema : {
88
+ type : 'object' ,
89
+ properties : {
90
+ x : { type : 'number' } ,
91
+ y : { type : 'number' } ,
92
+ } ,
93
+ required : [ 'x' , 'y' ] ,
94
+ } ,
95
+ } ,
64
96
] ,
65
- returnSchema : { } ,
97
+ returnSchema : {
98
+ type : 'object' ,
99
+ properties : {
100
+ x : { type : 'number' } ,
101
+ y : { type : 'number' } ,
102
+ } ,
103
+ required : [ 'x' , 'y' ] ,
104
+ } ,
66
105
} ,
67
106
] ) ;
68
107
} ) ;
@@ -538,7 +577,18 @@ describe('ContractAnalyzer - Multi-File with Schema', () => {
538
577
name : 'getUser' ,
539
578
params : [ { name : 'id' , schema : { type : 'string' } } ] ,
540
579
returnSchema : {
541
- anyOf : [ { } ] ,
580
+ anyOf : [
581
+ {
582
+ type : 'object' ,
583
+ properties : {
584
+ id : { type : 'string' } ,
585
+ name : { type : 'string' } ,
586
+ age : { type : 'number' } ,
587
+ } ,
588
+ required : [ 'id' , 'name' , 'age' ] ,
589
+ } ,
590
+ { } ,
591
+ ] ,
542
592
} ,
543
593
} ,
544
594
] ) ;
@@ -548,17 +598,40 @@ describe('ContractAnalyzer - Multi-File with Schema', () => {
548
598
params : [
549
599
{
550
600
name : 'userData' ,
551
- schema : { } ,
601
+ schema : {
602
+ type : 'object' ,
603
+ properties : {
604
+ id : { type : 'string' } ,
605
+ name : { type : 'string' } ,
606
+ age : { type : 'number' } ,
607
+ } ,
608
+ required : [ 'id' , 'name' , 'age' ] ,
609
+ } ,
552
610
} ,
553
611
] ,
554
- returnSchema : { } ,
612
+ returnSchema : {
613
+ type : 'object' ,
614
+ properties : {
615
+ id : { type : 'string' } ,
616
+ name : { type : 'string' } ,
617
+ age : { type : 'number' } ,
618
+ } ,
619
+ required : [ 'id' , 'name' , 'age' ] ,
620
+ } ,
555
621
} ,
556
622
{
557
623
name : 'updateConfig' ,
558
624
params : [
559
625
{
560
626
name : 'config' ,
561
- schema : { } ,
627
+ schema : {
628
+ type : 'object' ,
629
+ properties : {
630
+ debug : { type : 'boolean' } ,
631
+ timeout : { type : 'number' } ,
632
+ } ,
633
+ required : [ 'debug' ] ,
634
+ } ,
562
635
} ,
563
636
] ,
564
637
returnSchema : { } ,
@@ -681,7 +754,19 @@ describe('ContractAnalyzer - Multi-File with Schema', () => {
681
754
expect ( result . mutations ) . toEqual ( [
682
755
{
683
756
name : 'addItem' ,
684
- params : [ { name : 'item' , schema : { } } ] ,
757
+ params : [
758
+ {
759
+ name : 'item' ,
760
+ schema : {
761
+ type : 'object' ,
762
+ properties : {
763
+ id : { type : 'string' } ,
764
+ value : { type : 'number' } ,
765
+ } ,
766
+ required : [ 'id' , 'value' ] ,
767
+ } ,
768
+ } ,
769
+ ] ,
685
770
returnSchema : { } ,
686
771
} ,
687
772
] ) ;
@@ -736,19 +821,75 @@ describe('ContractAnalyzer - Multi-File with Schema', () => {
736
821
{
737
822
name : 'getProfile' ,
738
823
params : [ { name : 'id' , schema : { type : 'string' } } ] ,
739
- returnSchema : { } ,
824
+ returnSchema : {
825
+ type : 'object' ,
826
+ properties : {
827
+ username : { type : 'string' } ,
828
+ email : { type : 'string' } ,
829
+ preferences : {
830
+ type : 'object' ,
831
+ properties : {
832
+ theme : { type : 'string' , enum : [ 'light' , 'dark' ] } ,
833
+ notifications : { type : 'boolean' } ,
834
+ } ,
835
+ required : [ 'theme' , 'notifications' ] ,
836
+ } ,
837
+ } ,
838
+ required : [ 'username' , 'email' , 'preferences' ] ,
839
+ } ,
740
840
} ,
741
841
] ) ;
742
842
expect ( result . mutations ) . toEqual ( [
743
843
{
744
844
name : 'saveProfile' ,
745
- params : [ { name : 'profile' , schema : { } } ] ,
845
+ params : [
846
+ {
847
+ name : 'profile' ,
848
+ schema : {
849
+ type : 'object' ,
850
+ properties : {
851
+ username : { type : 'string' } ,
852
+ email : { type : 'string' } ,
853
+ preferences : {
854
+ type : 'object' ,
855
+ properties : {
856
+ theme : { type : 'string' , enum : [ 'light' , 'dark' ] } ,
857
+ notifications : { type : 'boolean' } ,
858
+ } ,
859
+ required : [ 'theme' , 'notifications' ] ,
860
+ } ,
861
+ } ,
862
+ required : [ 'username' , 'email' , 'preferences' ] ,
863
+ } ,
864
+ } ,
865
+ ] ,
746
866
returnSchema : { } ,
747
867
} ,
748
868
{
749
869
name : 'handleResponse' ,
750
- params : [ { name : 'response' , schema : { } } ] ,
751
- returnSchema : { } ,
870
+ params : [
871
+ {
872
+ name : 'response' ,
873
+ schema : {
874
+ type : 'object' ,
875
+ properties : {
876
+ data : { } ,
877
+ status : { type : 'number' } ,
878
+ message : { type : 'string' } ,
879
+ } ,
880
+ required : [ 'data' , 'status' , 'message' ] ,
881
+ } ,
882
+ } ,
883
+ ] ,
884
+ returnSchema : {
885
+ type : 'object' ,
886
+ properties : {
887
+ data : { } ,
888
+ status : { type : 'number' } ,
889
+ message : { type : 'string' } ,
890
+ } ,
891
+ required : [ 'data' , 'status' , 'message' ] ,
892
+ } ,
752
893
} ,
753
894
] ) ;
754
895
} ) ;
0 commit comments