1+ import json
12from collections import namedtuple
23from pytest import raises
34from graphql .core import graphql
@@ -37,7 +38,7 @@ def getNode(id, info):
3738 return photoData [id ]
3839
3940def getNodeType (obj ):
40- if obj .id in userData :
41+ if str ( obj .id ) in userData :
4142 return userType
4243 else :
4344 return photoType
@@ -49,7 +50,7 @@ def getNodeType(obj):
4950 'User' ,
5051 fields = lambda : {
5152 'id' : GraphQLField (GraphQLNonNull (GraphQLID )),
52- 'name' : GraphQLField (GraphQLString ),
53+ 'name' : GraphQLField (GraphQLString , resolver = lambda * _ : 'name' ),
5354 },
5455 interfaces = [nodeInterface ]
5556)
@@ -67,11 +68,13 @@ def getNodeType(obj):
6768 'Query' ,
6869 fields = lambda : {
6970 'node' : nodeField ,
71+ 'user' : GraphQLField (userType , resolver = lambda * _ : userData ['1' ]),
7072 }
7173)
7274
7375schema = GraphQLSchema (query = queryType )
7476
77+
7578def test_include_connections_and_edge_types ():
7679 query = '''
7780 {
@@ -89,3 +92,62 @@ def test_include_connections_and_edge_types():
8992 assert not result .errors
9093 assert result .data == expected
9194
95+
96+ def test_preserves_order1 ():
97+ query = '''
98+ {
99+ node(id: "1") {
100+ ... on User {
101+ name
102+ id
103+ }
104+ }
105+ }
106+ '''
107+ result = graphql (schema , query )
108+ assert not result .errors
109+ assert json .dumps (result .data ) == '{"node": {"name": "name", "id": "1"}}'
110+
111+
112+ def test_preserves_order2 ():
113+ query = '''
114+ {
115+ node(id: "1") {
116+ ... on User {
117+ id
118+ name
119+ }
120+ }
121+ }
122+ '''
123+ result = graphql (schema , query )
124+ assert not result .errors
125+ assert json .dumps (result .data ) == '{"node": {"id": "1", "name": "name"}}'
126+
127+
128+ def test_preserves_order_general1 ():
129+ query = '''
130+ {
131+ user {
132+ id
133+ name
134+ }
135+ }
136+ '''
137+ result = graphql (schema , query )
138+ assert not result .errors
139+ assert json .dumps (result .data ) == '{"user": {"id": "1", "name": "name"}}'
140+
141+
142+ def test_preserves_order_general2 ():
143+ query = '''
144+ {
145+ user {
146+ name
147+ id
148+ }
149+ }
150+ '''
151+ result = graphql (schema , query )
152+ assert not result .errors
153+ assert json .dumps (result .data ) == '{"user": {"name": "name", "id": "1"}}'
0 commit comments