karrio-server-graph 2025.5rc1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- karrio/server/graph/__init__.py +1 -0
- karrio/server/graph/admin.py +3 -0
- karrio/server/graph/apps.py +5 -0
- karrio/server/graph/forms.py +59 -0
- karrio/server/graph/management/__init__.py +0 -0
- karrio/server/graph/management/commands/__init__.py +0 -0
- karrio/server/graph/management/commands/export_schema.py +9 -0
- karrio/server/graph/migrations/0001_initial.py +37 -0
- karrio/server/graph/migrations/0002_auto_20210512_1353.py +22 -0
- karrio/server/graph/migrations/__init__.py +0 -0
- karrio/server/graph/models.py +44 -0
- karrio/server/graph/schema.py +46 -0
- karrio/server/graph/schemas/__init__.py +2 -0
- karrio/server/graph/schemas/base/__init__.py +367 -0
- karrio/server/graph/schemas/base/inputs.py +582 -0
- karrio/server/graph/schemas/base/mutations.py +871 -0
- karrio/server/graph/schemas/base/types.py +1365 -0
- karrio/server/graph/serializers.py +388 -0
- karrio/server/graph/templates/graphql/graphiql.html +142 -0
- karrio/server/graph/templates/karrio/email_change_email.html +13 -0
- karrio/server/graph/templates/karrio/email_change_email.txt +13 -0
- karrio/server/graph/templates/karrio/password_reset_email.html +14 -0
- karrio/server/graph/tests/__init__.py +9 -0
- karrio/server/graph/tests/base.py +124 -0
- karrio/server/graph/tests/test_carrier_connections.py +219 -0
- karrio/server/graph/tests/test_metafield.py +404 -0
- karrio/server/graph/tests/test_rate_sheets.py +348 -0
- karrio/server/graph/tests/test_templates.py +677 -0
- karrio/server/graph/tests/test_user_info.py +71 -0
- karrio/server/graph/urls.py +10 -0
- karrio/server/graph/utils.py +304 -0
- karrio/server/graph/views.py +93 -0
- karrio/server/settings/graph.py +7 -0
- karrio_server_graph-2025.5rc1.dist-info/METADATA +29 -0
- karrio_server_graph-2025.5rc1.dist-info/RECORD +37 -0
- karrio_server_graph-2025.5rc1.dist-info/WHEEL +5 -0
- karrio_server_graph-2025.5rc1.dist-info/top_level.txt +2 -0
@@ -0,0 +1,348 @@
|
|
1
|
+
import karrio.lib as lib
|
2
|
+
from unittest.mock import ANY
|
3
|
+
from karrio.server.graph.tests.base import GraphTestCase
|
4
|
+
import karrio.server.providers.models as providers
|
5
|
+
|
6
|
+
|
7
|
+
class TestRateSheets(GraphTestCase):
|
8
|
+
def setUp(self):
|
9
|
+
super().setUp()
|
10
|
+
|
11
|
+
# Create a test rate sheet
|
12
|
+
self.rate_sheet = providers.RateSheet.objects.create(
|
13
|
+
name="Test Rate Sheet",
|
14
|
+
carrier_name="ups",
|
15
|
+
slug="test_rate_sheet",
|
16
|
+
created_by=self.user,
|
17
|
+
)
|
18
|
+
|
19
|
+
# Create a test service
|
20
|
+
self.service = providers.ServiceLevel.objects.create(
|
21
|
+
service_name="UPS Standard",
|
22
|
+
service_code="ups_standard",
|
23
|
+
carrier_service_code="11",
|
24
|
+
currency="USD",
|
25
|
+
active=True,
|
26
|
+
zones=[
|
27
|
+
{
|
28
|
+
"rate": 10.00,
|
29
|
+
"label": "Zone 1",
|
30
|
+
"cities": ["New York", "Los Angeles"],
|
31
|
+
}
|
32
|
+
],
|
33
|
+
created_by=self.user,
|
34
|
+
)
|
35
|
+
self.rate_sheet.services.add(self.service)
|
36
|
+
|
37
|
+
def test_query_rate_sheets(self):
|
38
|
+
response = self.query(
|
39
|
+
"""
|
40
|
+
query get_rate_sheets {
|
41
|
+
rate_sheets {
|
42
|
+
edges {
|
43
|
+
node {
|
44
|
+
id
|
45
|
+
name
|
46
|
+
carrier_name
|
47
|
+
slug
|
48
|
+
services {
|
49
|
+
id
|
50
|
+
service_name
|
51
|
+
service_code
|
52
|
+
carrier_service_code
|
53
|
+
active
|
54
|
+
currency
|
55
|
+
zones {
|
56
|
+
rate
|
57
|
+
label
|
58
|
+
cities
|
59
|
+
postal_codes
|
60
|
+
country_codes
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
""",
|
68
|
+
operation_name="get_rate_sheets",
|
69
|
+
)
|
70
|
+
response_data = response.data
|
71
|
+
|
72
|
+
self.assertResponseNoErrors(response)
|
73
|
+
self.assertDictEqual(
|
74
|
+
lib.to_dict(response_data),
|
75
|
+
RATE_SHEETS_RESPONSE,
|
76
|
+
)
|
77
|
+
|
78
|
+
def test_create_rate_sheet(self):
|
79
|
+
response = self.query(
|
80
|
+
"""
|
81
|
+
mutation create_rate_sheet($data: CreateRateSheetMutationInput!) {
|
82
|
+
create_rate_sheet(input: $data) {
|
83
|
+
rate_sheet {
|
84
|
+
id
|
85
|
+
name
|
86
|
+
carrier_name
|
87
|
+
services {
|
88
|
+
id
|
89
|
+
service_name
|
90
|
+
service_code
|
91
|
+
currency
|
92
|
+
zones {
|
93
|
+
rate
|
94
|
+
label
|
95
|
+
postal_codes
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
101
|
+
""",
|
102
|
+
operation_name="create_rate_sheet",
|
103
|
+
variables=CREATE_RATE_SHEET_DATA,
|
104
|
+
)
|
105
|
+
response_data = response.data
|
106
|
+
|
107
|
+
self.assertResponseNoErrors(response)
|
108
|
+
self.assertDictEqual(response_data, CREATE_RATE_SHEET_RESPONSE)
|
109
|
+
|
110
|
+
def test_update_rate_sheet(self):
|
111
|
+
response = self.query(
|
112
|
+
"""
|
113
|
+
mutation update_rate_sheet($data: UpdateRateSheetMutationInput!) {
|
114
|
+
update_rate_sheet(input: $data) {
|
115
|
+
rate_sheet {
|
116
|
+
id
|
117
|
+
name
|
118
|
+
services {
|
119
|
+
id
|
120
|
+
service_name
|
121
|
+
zones {
|
122
|
+
rate
|
123
|
+
label
|
124
|
+
country_codes
|
125
|
+
}
|
126
|
+
}
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
130
|
+
""",
|
131
|
+
operation_name="update_rate_sheet",
|
132
|
+
variables={
|
133
|
+
"data": {
|
134
|
+
"id": self.rate_sheet.id,
|
135
|
+
"name": "Updated Rate Sheet",
|
136
|
+
"services": [
|
137
|
+
{
|
138
|
+
"id": self.service.id,
|
139
|
+
"service_name": "Updated Service",
|
140
|
+
"zones": [
|
141
|
+
{
|
142
|
+
"rate": 20.0,
|
143
|
+
"label": "Updated Zone",
|
144
|
+
"country_codes": ["US", "CA"],
|
145
|
+
}
|
146
|
+
],
|
147
|
+
}
|
148
|
+
],
|
149
|
+
},
|
150
|
+
},
|
151
|
+
)
|
152
|
+
response_data = response.data
|
153
|
+
|
154
|
+
self.assertResponseNoErrors(response)
|
155
|
+
self.assertDictEqual(
|
156
|
+
lib.to_dict(response_data),
|
157
|
+
UPDATE_RATE_SHEET_RESPONSE,
|
158
|
+
)
|
159
|
+
|
160
|
+
def test_update_service_zone(self):
|
161
|
+
response = self.query(
|
162
|
+
"""
|
163
|
+
mutation update_zone($data: UpdateServiceZoneMutationInput!) {
|
164
|
+
update_service_zone(input: $data) {
|
165
|
+
rate_sheet {
|
166
|
+
id
|
167
|
+
services {
|
168
|
+
id
|
169
|
+
zones {
|
170
|
+
rate
|
171
|
+
label
|
172
|
+
country_codes
|
173
|
+
}
|
174
|
+
}
|
175
|
+
}
|
176
|
+
}
|
177
|
+
}
|
178
|
+
""",
|
179
|
+
operation_name="update_zone",
|
180
|
+
variables={
|
181
|
+
"data": {
|
182
|
+
"id": self.rate_sheet.id,
|
183
|
+
"service_id": self.service.id,
|
184
|
+
**UPDATE_ZONE_DATA["data"],
|
185
|
+
},
|
186
|
+
},
|
187
|
+
)
|
188
|
+
response_data = response.data
|
189
|
+
|
190
|
+
self.assertResponseNoErrors(response)
|
191
|
+
self.assertDictEqual(
|
192
|
+
lib.to_dict(response_data),
|
193
|
+
UPDATE_ZONE_RESPONSE,
|
194
|
+
)
|
195
|
+
|
196
|
+
|
197
|
+
RATE_SHEETS_RESPONSE = {
|
198
|
+
"data": {
|
199
|
+
"rate_sheets": {
|
200
|
+
"edges": [
|
201
|
+
{
|
202
|
+
"node": {
|
203
|
+
"carrier_name": "ups",
|
204
|
+
"id": ANY,
|
205
|
+
"name": "Test Rate Sheet",
|
206
|
+
"services": [
|
207
|
+
{
|
208
|
+
"active": True,
|
209
|
+
"carrier_service_code": "11",
|
210
|
+
"currency": "USD",
|
211
|
+
"id": ANY,
|
212
|
+
"service_code": "ups_standard",
|
213
|
+
"service_name": "UPS Standard",
|
214
|
+
"zones": [
|
215
|
+
{
|
216
|
+
"cities": ["New York", "Los Angeles"],
|
217
|
+
"label": "Zone 1",
|
218
|
+
"rate": 10.0,
|
219
|
+
}
|
220
|
+
],
|
221
|
+
}
|
222
|
+
],
|
223
|
+
"slug": "test_rate_sheet",
|
224
|
+
}
|
225
|
+
}
|
226
|
+
]
|
227
|
+
}
|
228
|
+
}
|
229
|
+
}
|
230
|
+
|
231
|
+
CREATE_RATE_SHEET_DATA = {
|
232
|
+
"data": {
|
233
|
+
"name": "New Rate Sheet",
|
234
|
+
"carrier_name": "fedex",
|
235
|
+
"services": [
|
236
|
+
{
|
237
|
+
"service_name": "FedEx Ground",
|
238
|
+
"service_code": "fedex_ground",
|
239
|
+
"carrier_service_code": "FEDEX_GROUND",
|
240
|
+
"currency": "USD",
|
241
|
+
"zones": [
|
242
|
+
{
|
243
|
+
"rate": 15.0,
|
244
|
+
"label": "Zone A",
|
245
|
+
"postal_codes": ["12345", "67890"],
|
246
|
+
}
|
247
|
+
],
|
248
|
+
}
|
249
|
+
],
|
250
|
+
}
|
251
|
+
}
|
252
|
+
|
253
|
+
CREATE_RATE_SHEET_RESPONSE = {
|
254
|
+
"data": {
|
255
|
+
"create_rate_sheet": {
|
256
|
+
"rate_sheet": {
|
257
|
+
"id": ANY,
|
258
|
+
"name": "New Rate Sheet",
|
259
|
+
"carrier_name": "fedex",
|
260
|
+
"services": [
|
261
|
+
{
|
262
|
+
"id": ANY,
|
263
|
+
"service_name": "FedEx Ground",
|
264
|
+
"service_code": "fedex_ground",
|
265
|
+
"currency": "USD",
|
266
|
+
"zones": [
|
267
|
+
{
|
268
|
+
"rate": 15.0,
|
269
|
+
"label": "Zone A",
|
270
|
+
"postal_codes": ["12345", "67890"],
|
271
|
+
}
|
272
|
+
],
|
273
|
+
}
|
274
|
+
],
|
275
|
+
}
|
276
|
+
}
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
UPDATE_RATE_SHEET_DATA = {
|
281
|
+
"data": {
|
282
|
+
"name": "Updated Rate Sheet",
|
283
|
+
"services": [
|
284
|
+
{
|
285
|
+
"id": ANY, # Will be replaced with actual service ID in test
|
286
|
+
"service_name": "Updated Service",
|
287
|
+
"zones": [
|
288
|
+
{
|
289
|
+
"rate": 20.0,
|
290
|
+
"label": "Updated Zone",
|
291
|
+
"country_codes": ["US", "CA"],
|
292
|
+
}
|
293
|
+
],
|
294
|
+
}
|
295
|
+
],
|
296
|
+
}
|
297
|
+
}
|
298
|
+
|
299
|
+
UPDATE_RATE_SHEET_RESPONSE = {
|
300
|
+
"data": {
|
301
|
+
"update_rate_sheet": {
|
302
|
+
"rate_sheet": {
|
303
|
+
"id": ANY,
|
304
|
+
"name": "Updated Rate Sheet",
|
305
|
+
"services": [
|
306
|
+
{
|
307
|
+
"id": ANY,
|
308
|
+
"service_name": "UPS Standard",
|
309
|
+
"zones": [{"label": "Zone 1", "rate": 10.0}],
|
310
|
+
}
|
311
|
+
],
|
312
|
+
}
|
313
|
+
}
|
314
|
+
}
|
315
|
+
}
|
316
|
+
|
317
|
+
UPDATE_ZONE_DATA = {
|
318
|
+
"data": {
|
319
|
+
"zone_index": 0,
|
320
|
+
"zone": {
|
321
|
+
"rate": 25.0,
|
322
|
+
"label": "Modified Zone",
|
323
|
+
"country_codes": ["MX"],
|
324
|
+
},
|
325
|
+
}
|
326
|
+
}
|
327
|
+
|
328
|
+
UPDATE_ZONE_RESPONSE = {
|
329
|
+
"data": {
|
330
|
+
"update_service_zone": {
|
331
|
+
"rate_sheet": {
|
332
|
+
"id": ANY,
|
333
|
+
"services": [
|
334
|
+
{
|
335
|
+
"id": ANY,
|
336
|
+
"zones": [
|
337
|
+
{
|
338
|
+
"rate": 25.0,
|
339
|
+
"label": "Modified Zone",
|
340
|
+
"country_codes": ["MX"],
|
341
|
+
}
|
342
|
+
],
|
343
|
+
}
|
344
|
+
],
|
345
|
+
}
|
346
|
+
}
|
347
|
+
}
|
348
|
+
}
|