✅ Add basic create order test

🎨 Add MutationTest helper to help write mutation tests with strawberry
➕ add pytest-django
⬆ Bump some python deps
This commit is contained in:
nikolark authored and Nikolai R Kristiansen committed 2022-01-16 22:30:47 +01:00
1 parent 549b0cfdd6
commit 9d3afadbff
6 files changed
+325 -193

No files matched your search

+50
View File
@@ -0,0 +1,50 @@
import pytest
from django.test import Client
from strawberry.django.test import GraphQLTestClient
from main.api.mutations import create_order
from main.models import Product, Order
from main.testing import MutationTest
@pytest.fixture(name="gql_client")
def gql_client_fixture(client: Client):
yield GraphQLTestClient(client)
@pytest.fixture(name='product')
def product_fix(db):
return Product.objects.create(name='borg', sale_price_ext=35, sale_price_int=30)
@pytest.fixture(name='create_order_mutation')
def create_order_mutation_fixture(product):
fields = """
... on CreateOrderSuccess {
order {
id
orderSum
orderlines {
id
product {
id
}
}
}
}"""
# FIXME: maybe drop this helper and just use GraphQLTestClient
return MutationTest(create_order, fields)
def test_create_order(product, create_order_mutation):
assert Order.objects.count() == 0
res = create_order_mutation.mutate(customerId="external", isExternal=True, orderLines=[{"productId": product.id, "amount": 1}])
assert res
assert not res.errors
assert res.data
order_lines = res.data.get('createOrder', {}).get('order', {}).get('orderlines', [])
assert order_lines
assert order_lines[0]['product']['id'] == str(product.id)
assert Order.objects.count() == 1
o = Order.objects.first()
assert o.orderlines.first().product.id == product.id