@@ -4186,3 +4186,67 @@ func TestParseMissingGraphQLVar(t *testing.T) {
41864186 require .Error (t , err )
41874187 }
41884188}
4189+
4190+ func TestParseGraphQLVarPaginationRoot (t * testing.T ) {
4191+ for _ , q := range []string {
4192+ "query test($a: int = 2){ q(func: uid(0x1), first: $a) { name }}" ,
4193+ "query test($a: int = 2){ q(func: uid(0x1), offset: $a) { name }}" ,
4194+ "query test($a: int = 2){ q(func: uid(0x1), orderdesc: name, first: $a) { name }}" ,
4195+ "query test($a: int = 2){ q(func: uid(0x1), orderdesc: name, offset: $a) { name }}" ,
4196+ "query test($a: int = 2){ q(func: eq(name, \" abc\" ), orderdesc: name, first: $a) { name }}" ,
4197+ "query test($a: int = 2){ q(func: eq(name, \" abc\" ), orderdesc: name, offset: $a) { name }}" ,
4198+ } {
4199+ r := Request {
4200+ Str : q ,
4201+ Variables : map [string ]string {"$a" : "3" },
4202+ }
4203+ gq , err := Parse (r )
4204+ t .Log (q )
4205+ t .Log (err )
4206+ require .NoError (t , err )
4207+ args := gq .Query [0 ].Args
4208+ require .True (t , args ["first" ] == "3" || args ["offset" ] == "3" )
4209+ }
4210+ }
4211+
4212+ func TestParseGraphQLVarPaginationChild (t * testing.T ) {
4213+ for _ , q := range []string {
4214+ "query test($a: int = 2){ q(func: uid(0x1)) { friend(first: $a) }}" ,
4215+ "query test($a: int = 2){ q(func: uid(0x1)) { friend(offset: $a) }}" ,
4216+ "query test($a: int = 2){ q(func: uid(0x1), orderdesc: name) { friend(first: $a) }}" ,
4217+ "query test($a: int = 2){ q(func: uid(0x1), orderdesc: name) { friend(offset: $a) }}" ,
4218+ "query test($a: int = 2){ q(func: eq(name, \" abc\" ), orderdesc: name) { friend(first: $a) }}" ,
4219+ "query test($a: int = 2){ q(func: eq(name, \" abc\" ), orderdesc: name) { friend(offset: $a) }}" ,
4220+ } {
4221+ r := Request {
4222+ Str : q ,
4223+ Variables : map [string ]string {"$a" : "3" },
4224+ }
4225+ gq , err := Parse (r )
4226+ t .Log (q )
4227+ t .Log (err )
4228+ require .NoError (t , err )
4229+ args := gq .Query [0 ].Children [0 ].Args
4230+ require .True (t , args ["first" ] == "3" || args ["offset" ] == "3" )
4231+ }
4232+ }
4233+
4234+ func TestParseGraphQLVarPaginationRootMultiple (t * testing.T ) {
4235+ q := `query test($a: int, $b: int, $after: string){
4236+ q(func: uid(0x1), first: $a, offset: $b, after: $after, orderasc: name) {
4237+ friend
4238+ }
4239+ }`
4240+
4241+ r := Request {
4242+ Str : q ,
4243+ Variables : map [string ]string {"$a" : "3" , "$b" : "5" , "$after" : "0x123" },
4244+ }
4245+ gq , err := Parse (r )
4246+ require .NoError (t , err )
4247+ args := gq .Query [0 ].Args
4248+ require .Equal (t , args ["first" ], "3" )
4249+ require .Equal (t , args ["offset" ], "5" )
4250+ require .Equal (t , args ["after" ], "0x123" )
4251+ require .Equal (t , gq .Query [0 ].Order [0 ].Attr , "name" )
4252+ }
0 commit comments