@@ -62,6 +62,69 @@ def resolve_reporter(self, info, **args):
62
62
assert result .data == expected
63
63
64
64
65
+ def test_should_query_nested_field ():
66
+ r1 = Reporter (last_name = "ABA" )
67
+ r1 .save ()
68
+ r2 = Reporter (last_name = "Griffin" )
69
+ r2 .save ()
70
+ r2 .pets .add (r1 )
71
+ r1 .pets .add (r2 )
72
+
73
+ class ReporterType (DjangoObjectType ):
74
+ class Meta :
75
+ model = Reporter
76
+ interfaces = (Node ,)
77
+
78
+ class Query (graphene .ObjectType ):
79
+ reporter = graphene .Field (ReporterType )
80
+ debug = graphene .Field (DjangoDebug , name = "__debug" )
81
+
82
+ def resolve_reporter (self , info , ** args ):
83
+ return Reporter .objects .first ()
84
+
85
+ query = """
86
+ query ReporterQuery {
87
+ reporter {
88
+ lastName
89
+ pets { edges { node {
90
+ lastName
91
+ pets { edges { node { lastName } } }
92
+ } } }
93
+ }
94
+ __debug {
95
+ sql {
96
+ rawSql
97
+ }
98
+ }
99
+ }
100
+ """
101
+ expected = {
102
+ "reporter" : {
103
+ "lastName" : "ABA" ,
104
+ 'pets' : {'edges' : [{'node' : {
105
+ 'lastName' : 'Griffin' ,
106
+ 'pets' : {'edges' : [{'node' : {
107
+ 'lastName' : 'ABA' ,
108
+ } } ] }
109
+ } } ] },
110
+ },
111
+ }
112
+ schema = graphene .Schema (query = Query )
113
+ result = schema .execute (
114
+ query , context_value = context (), middleware = [DjangoDebugMiddleware ()]
115
+ )
116
+ assert not result .errors
117
+ query = str (Reporter .objects .order_by ("pk" )[:1 ].query )
118
+ assert result .data ["__debug" ]["sql" ][0 ]["rawSql" ] == query
119
+ assert "COUNT" in result .data ["__debug" ]["sql" ][1 ]["rawSql" ]
120
+ assert "tests_reporter_pets" in result .data ["__debug" ]["sql" ][2 ]["rawSql" ]
121
+ assert "COUNT" in result .data ["__debug" ]["sql" ][3 ]["rawSql" ]
122
+ assert "tests_reporter_pets" in result .data ["__debug" ]["sql" ][4 ]["rawSql" ]
123
+ assert len (result .data ["__debug" ]["sql" ]) == 5
124
+
125
+ assert result .data ["reporter" ] == expected ["reporter" ]
126
+
127
+
65
128
def test_should_query_list ():
66
129
r1 = Reporter (last_name = "ABA" )
67
130
r1 .save ()
0 commit comments