1+ // Tests using modified examples from https://graphql.org/learn/queries/
12@isTest
23public class GraphQLQueryTests {
34
5+ // {
6+ // hero {
7+ // name
8+ // }
9+ // }
410 @isTest
5- private static void readmeExample (){
6- GraphQLNode human = new GraphQLNode (' human' )
7- .addArguments (new GraphQLArgument (' id' , ' 1000' ))
8- .add (new Object []{
9- ' name' ,
10- ' height' ,
11- new GraphQLNode (' address' )
12- .add (new Object []{ ' city' , ' country' })
13- });
14- GraphQLQuery qry = new GraphQLQuery (human , null );
11+ private static void simpleNode (){
12+ GraphQLNode node = new GraphQLNode (' hero' )
13+ .add (' name' );
14+ GraphQLQuery qry = new GraphQLQuery (node , null );
15+ System .assertEquals (' {hero{name}}' , qry .query .deleteWhitespace ());
1516 }
1617
18+ // {
19+ // hero(name: "luke skywalker") {
20+ // id
21+ // }
22+ // }
23+ @isTest
24+ private static void testStringArg (){
25+ GraphQLNode node = new GraphQLNode (' hero' )
26+ .addArguments (new GraphQLArgument (' name' , ' luke skywalker' ))
27+ .add (' id' );
28+ GraphQLQuery qry = new GraphQLQuery (node , null );
29+ System .assertEquals (' {hero(name:\" luke skywalker\" ){id}}' , qry .query .remove (' \n ' ));
30+ }
1731
32+ // {
33+ // hero(id: 1000) {
34+ // name
35+ // }
36+ // }
1837 @isTest
19- private static void simpleNode (){
20- GraphQLNode n = new GraphQLNode (' hello' )
21- .add (' world' );
22- System .assertEquals (' hello{world}' , n .build ().deleteWhitespace ());
38+ private static void testNumberArg (){
39+ GraphQLNode node = new GraphQLNode (' hero' )
40+ .addArguments (new GraphQLArgument (' id' , 1000 ))
41+ .add (' name' );
42+ GraphQLQuery qry = new GraphQLQuery (node , null );
43+ System .assertEquals (' {hero(id:1000){name}}' , qry .query .remove (' \n ' ));
2344 }
2445
46+ // {
47+ // hero(isJedi: true) {
48+ // name
49+ // }
50+ // }
2551 @isTest
26- private static void testSimpleArgs (){
27- GraphQLNode n = new GraphQLNode (' hello' )
28- .addArguments (new GraphQLArgument (' key' , ' value' ))
29- .add (' world' );
30- System .assertEquals (' hello(key:\" value\" ){world}' , n .build ().deleteWhitespace ());
52+ private static void testBooleanArg (){
53+ GraphQLNode node = new GraphQLNode (' hero' )
54+ .addArguments (new GraphQLArgument (' isJedi' , true ))
55+ .add (' name' );
56+ GraphQLQuery qry = new GraphQLQuery (node , null );
57+ System .assertEquals (' {hero(isJedi:true){name}}' , qry .query .remove (' \n ' ));
3158 }
3259
60+ // {
61+ // hero(episode: EMPIRE) {
62+ // name
63+ // }
64+ // }
3365 @isTest
34- private static void testChildArgs (){
35- GraphQLNode n = new GraphQLNode (' hello' )
36- .addArguments (new GraphQLArgument (' input' , new GraphQLArgument []{
37- new GraphQLArgument (' key1' , ' value1' ),
38- new GraphQLArgument (' key2' , ' value2' )
66+ private static void testStringVariableArg (){
67+ GraphQLNode node = new GraphQLNode (' hero' )
68+ .addArguments (new GraphQLArgument (' episode' , ' EMPIRE' , true ))
69+ .add (' name' );
70+ GraphQLQuery qry = new GraphQLQuery (node , null );
71+ System .assertEquals (' {hero(episode:EMPIRE){name}}' , qry .query .remove (' \n ' ));
72+ }
73+
74+ // {
75+ // hero(attr: {droid: false, weapon: "lightsaber"}) {
76+ // name
77+ // }
78+ // }
79+ @isTest
80+ private static void testNestedArgs (){
81+ GraphQLNode node = new GraphQLNode (' hero' )
82+ .addArguments (new GraphQLArgument (' attr' , new GraphQLArgument []{
83+ new GraphQLArgument (' droid' , false ),
84+ new GraphQLArgument (' weapon' , ' lightsaber' )
3985 }))
40- .add (' world' );
41- System .assertEquals (' hello(input:{key1:\" value1\" , key2:\" value2\" }){world}' , n .build ().remove (' \n ' ));
86+ .add (' name' );
87+ GraphQLQuery qry = new GraphQLQuery (node , null );
88+ System .assertEquals (' {hero(attr:{droid:false, weapon:\" lightsaber\" }){name}}' , qry .query .remove (' \n ' ));
4289 }
4390
91+ // {
92+ // hero(episode: EMPIRE, dies: true}) {
93+ // name
94+ // }
95+ // }
4496 @isTest
45- private static void testMultipleTopLevelArgs (){
46- GraphQLNode n = new GraphQLNode (' hero' )
97+ private static void testMultipleArgs (){
98+ GraphQLNode node = new GraphQLNode (' hero' )
4799 .addArguments (new GraphQLArgument []{
48100 new GraphQLArgument (' episode' , ' EMPIRE' , true ),
49- new GraphQLArgument (' robot ' , true )
101+ new GraphQLArgument (' dies ' , true )
50102 })
51103 .add (' name' );
52-
53- System .assertEquals (' hero(episode:EMPIRE, robot :true){name}' , n . build () .remove (' \n ' ));
104+ GraphQLQuery qry = new GraphQLQuery ( node , null );
105+ System .assertEquals (' { hero(episode:EMPIRE, dies :true){name}} ' , qry . query .remove (' \n ' ));
54106 }
55107
108+ // {
109+ // hero {
110+ // attr {
111+ // weapon
112+ // }
113+ // }
114+ // }
56115 @isTest
57- private static void testChildNode (){
58- GraphQLNode n = new GraphQLNode (' message ' )
116+ private static void testNestedNode (){
117+ GraphQLNode node = new GraphQLNode (' hero ' )
59118 .add (
60- new GraphQLNode (' hello ' ).add (' world ' )
119+ new GraphQLNode (' attr ' ).add (' weapon ' )
61120 );
62- System .assertEquals (' message{hello{world}}' , n .build ().deleteWhitespace ());
121+ GraphQLQuery qry = new GraphQLQuery (node , null );
122+ System .assertEquals (' {hero{attr{weapon}}}' , qry .query .remove (' \n ' ));
63123 }
64124
125+ // {
126+ // hero {
127+ // name
128+ // ... on Droid {
129+ // primaryFunction
130+ // }
131+ // }
132+ // }
65133 @isTest
66134 private static void testChildOnType (){
67- GraphQLNode n = new GraphQLNode (' foo ' )
135+ GraphQLNode node = new GraphQLNode (' hero ' )
68136 .add (new Object []{
69- new GraphQLNode (' bar' )
137+ ' name' ,
138+ new GraphQLNode (' Droid' )
70139 .setTypeFragment (true )
71- .add (' x ' )
140+ .add (' primaryFunction ' )
72141 });
73- System .assertEquals (' foo{... on bar{x}}' , n .build ().remove (' \n ' ));
142+ GraphQLQuery qry = new GraphQLQuery (node , null );
143+ System .assertEquals (' {hero{name... on Droid{primaryFunction}}}' , qry .query .remove (' \n ' ));
74144 }
75145
146+ // {
147+ // empireHero: hero(episode: EMPIRE) {
148+ // name
149+ // }
150+ // jediHero: hero(episode: JEDI) {
151+ // name
152+ // }
153+ // }
76154 @isTest
77155 private static void testAlias (){
78156 GraphQLNode [] nodes = new GraphQLNode []{
@@ -98,6 +176,14 @@ public class GraphQLQueryTests {
98176 // commentary
99177 // }
100178 // }
179+ // == Variables ==
180+ // {
181+ // "ep": "JEDI",
182+ // "review": {
183+ // "stars": 5,
184+ // "commentary": "This is a great movie!"
185+ // }
186+ // }
101187 @isTest
102188 private static void testOperation (){
103189 GraphQLNode node = new GraphQLNode (' CreateReviewForEpisode' )
@@ -113,17 +199,30 @@ public class GraphQLQueryTests {
113199 .add (new Object []{' stars' , ' commentary' })
114200 );
115201
116- TestVariables test = new TestVariables ();
117- GraphQLQuery qry = new GraphQLQuery (node , test );
202+ CreateReviewForEpisode createReviewVariables = new CreateReviewForEpisode ();
203+ createReviewVariables .ep = ' JEDI' ;
204+ createReviewVariables .review = new Review ();
205+ createReviewVariables .review .stars = 5 ;
206+ createReviewVariables .review .commentary = ' This is a great movie!' ;
207+ GraphQLQuery qry = new GraphQLQuery (node , createReviewVariables );
208+ String payload = JSON .serialize (qry );
118209 System .assertEquals (
119- ' mutation CreateReviewForEpisode($ep:Episode!, $review:ReviewInput!){ createReview (episode:$ep, review:$review){ stars commentary } } ' ,
120- qry . query . replace ( ' \n ' , ' ' ). trim ()
210+ ' {"variables":{"review":{"stars":5,"commentary":"This is a great movie!"},"ep":"JEDI"},"query":" mutation CreateReviewForEpisode($ep:Episode!, $review:ReviewInput!){\\ ncreateReview (episode:$ep, review:$review){\\ nstars \\ ncommentary \\ n} \\ n} \\ n"} ' ,
211+ payload
121212 );
122213 }
123214
215+ /* DTO for testOperation mutation test */
216+ public class CreateReviewForEpisode
217+ {
218+ public String ep { get ; set ; }
219+ public Review review { get ; set ; }
220+ }
124221
125- private class TestVariables {
126- public String foo ;
127- public Decimal bar ;
222+ public class Review
223+ {
224+ public Integer stars { get ; set ; }
225+ public String commentary { get ; set ; }
128226 }
227+
129228}
0 commit comments