1
+ import pytest
2
+ from django .urls import reverse
3
+ from django .test import RequestFactory
1
4
from graphene .test import Client
2
5
from .schema import schema
3
6
from .fixtures import fixtures_data
4
7
5
8
6
- def test_bikes_last_item_query (fixtures_data ):
9
+ def test_bikes_first_item_query (fixtures_data ):
7
10
query = '''
8
11
{
9
- bikes(last : 1){
12
+ bikes(first : 1){
10
13
edges {
11
14
node {
12
15
name
@@ -27,14 +30,14 @@ def test_bikes_last_item_query(fixtures_data):
27
30
"edges" : [
28
31
{
29
32
"node" : {
30
- "name" : "CAADX ULTEGRA " ,
31
- "brand" : "Cannondale " ,
32
- "year" : '2019 ' ,
33
- "size" : ['46 ' , '51 ' , '54 ' , '58 ' ],
34
- "wheelSize" : 28 ,
35
- "type" : "Gravel "
33
+ "name" : "Level R " ,
34
+ "brand" : "Mondraker " ,
35
+ "year" : '2020 ' ,
36
+ "size" : ['S ' , 'M ' , 'L ' , 'XL ' ],
37
+ "wheelSize" : 27.5 ,
38
+ "type" : "MTB "
36
39
}
37
- },
40
+ }
38
41
]
39
42
}
40
43
}
@@ -48,7 +51,7 @@ def test_bikes_last_item_query(fixtures_data):
48
51
def test_bikes_filter_by_type_item_query (fixtures_data ):
49
52
query = '''
50
53
{
51
- bikes(first: 2, type: "MTB "){
54
+ bikes(first: 2, type: "Gravel "){
52
55
edges {
53
56
node {
54
57
name
@@ -69,12 +72,12 @@ def test_bikes_filter_by_type_item_query(fixtures_data):
69
72
"edges" : [
70
73
{
71
74
"node" : {
72
- "name" : "Level R " ,
73
- "brand" : "Mondraker " ,
74
- "year" : '2020 ' ,
75
- "size" : ['S ' , 'M ' , 'L ' , 'XL ' ],
76
- "wheelSize" : 27.5 ,
77
- "type" : "MTB "
75
+ "name" : "CAADX ULTEGRA " ,
76
+ "brand" : "Cannondale " ,
77
+ "year" : '2019 ' ,
78
+ "size" : ['46 ' , '51 ' , '54 ' , '58 ' ],
79
+ "wheelSize" : 28 ,
80
+ "type" : "Gravel "
78
81
}
79
82
}
80
83
]
@@ -118,3 +121,122 @@ def test_shop_data_query(fixtures_data):
118
121
client = Client (schema )
119
122
result = client .execute (query )
120
123
assert result == expected
124
+
125
+
126
+ @pytest .mark .django_db
127
+ def test_create_bike_mutation ():
128
+ query = '''
129
+ mutation {
130
+ createBike(bikeData:{
131
+ name:"Bullhorn",
132
+ brand:"Pegas",
133
+ year: "2019",
134
+ size: ["56", "58" ],
135
+ wheelSize: 28,
136
+ type: "Fixie"
137
+ }) {
138
+ bike {
139
+ name
140
+ brand
141
+ year
142
+ size
143
+ wheelSize
144
+ type
145
+ }
146
+ }
147
+ }
148
+ '''
149
+
150
+ expected = {
151
+ "data" : {
152
+ "createBike" : {
153
+ "bike" :
154
+ {
155
+ "name" : "Bullhorn" ,
156
+ "brand" : "Pegas" ,
157
+ "year" : "2019" ,
158
+ "size" : ["56" , "58" ],
159
+ "wheelSize" : 28 ,
160
+ "type" : "Fixie" ,
161
+ }
162
+ }
163
+ }
164
+ }
165
+
166
+ factory = RequestFactory ()
167
+ request = factory .post (reverse ('graphql-query' ))
168
+ client = Client (schema )
169
+ result = client .execute (query , context = request )
170
+ assert result == expected
171
+
172
+
173
+ @pytest .mark .django_db
174
+ def test_update_bike_mutation ():
175
+ query = '''
176
+ mutation {
177
+ updateBike(bikeData:{
178
+ id: "507f1f77bcf86cd799439011",
179
+ name:"Moterra Neo Updated",
180
+ year: "2020",
181
+ wheelSize: 27.5,
182
+ type: "EBike Updated"
183
+ }) {
184
+ bike {
185
+ name
186
+ brand
187
+ year
188
+ size
189
+ wheelSize
190
+ type
191
+ }
192
+ }
193
+ }
194
+ '''
195
+
196
+ expected = {
197
+ "data" : {
198
+ "updateBike" : {
199
+ "bike" :
200
+ {
201
+ "name" : "Moterra Neo Updated" ,
202
+ "brand" : "Cannondale" ,
203
+ "year" : "2020" ,
204
+ "size" : ["M" , "L" , "XL" ],
205
+ "wheelSize" : 27.5 ,
206
+ "type" : "EBike Updated"
207
+ }
208
+ }
209
+ }
210
+ }
211
+
212
+ factory = RequestFactory ()
213
+ request = factory .post (reverse ('graphql-query' ))
214
+ client = Client (schema )
215
+ result = client .execute (query , context = request )
216
+ print (result )
217
+ assert result == expected
218
+
219
+
220
+ @pytest .mark .django_db
221
+ def test_delete_bike_mutation ():
222
+ query = '''
223
+ mutation {
224
+ deleteBike(id: "507f1f77bcf86cd799439011") {
225
+ success
226
+ }
227
+ }
228
+ '''
229
+
230
+ expected = {
231
+ "data" : {
232
+ "deleteBike" : {
233
+ "success" : True
234
+ }
235
+ }
236
+ }
237
+
238
+ factory = RequestFactory ()
239
+ request = factory .post (reverse ('graphql-query' ))
240
+ client = Client (schema )
241
+ result = client .execute (query , context = request )
242
+ assert result == expected
0 commit comments