@@ -2567,6 +2567,22 @@ func TestLangs(t *testing.T) {
25672567 require .Equal (t , []string {"en" , "ru" , "hu" }, gq .Query [0 ].Children [1 ].Langs )
25682568}
25692569
2570+ func TestAllLangs (t * testing.T ) {
2571+ query := `
2572+ query {
2573+ me(func: uid(1)) {
2574+ name@*
2575+ }
2576+ }
2577+ `
2578+
2579+ gq , err := Parse (Request {Str : query })
2580+ require .NoError (t , err )
2581+ require .Equal (t , 1 , len (gq .Query [0 ].Children ))
2582+ require .Equal (t , "name" , gq .Query [0 ].Children [0 ].Attr )
2583+ require .Equal (t , []string {"*" }, gq .Query [0 ].Children [0 ].Langs )
2584+ }
2585+
25702586func TestLangsInvalid1 (t * testing.T ) {
25712587 query := `
25722588 query {
@@ -2665,6 +2681,36 @@ func TestLangsInvalid7(t *testing.T) {
26652681 require .Contains (t , err .Error (), "Expected only one dot(.) while parsing language list." )
26662682}
26672683
2684+ func TestLangsInvalid8 (t * testing.T ) {
2685+ query := `
2686+ query {
2687+ me(func: uid(1)) {
2688+ name@*:en
2689+ }
2690+ }
2691+ `
2692+
2693+ _ , err := Parse (Request {Str : query })
2694+ require .Error (t , err )
2695+ require .Contains (t , err .Error (),
2696+ "If * is used, no other languages are allowed in the language list" )
2697+ }
2698+
2699+ func TestLangsInvalid9 (t * testing.T ) {
2700+ query := `
2701+ query {
2702+ me(func: eqs(name@*, "Amir")) {
2703+ name@en
2704+ }
2705+ }
2706+ `
2707+
2708+ _ , err := Parse (Request {Str : query })
2709+ require .Error (t , err )
2710+ require .Contains (t , err .Error (),
2711+ "The * symbol cannot be used as a valid language inside functions" )
2712+ }
2713+
26682714func TestLangsFilter (t * testing.T ) {
26692715 query := `
26702716 query {
0 commit comments