50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
import pytest
|
|
from django.test import Client
|
|
from strawberry.django.test import GraphQLTestClient
|
|
|
|
from main.api.mutations import create_order
|
|
from main.models import Order, Product
|
|
|
|
|
|
@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)
|
|
|
|
|
|
def test_create_order(product, gql_client):
|
|
assert Order.objects.count() == 0
|
|
variables = dict(customerId="external", isExternal=True, orderLines=[{"productId": product.id, "amount": 1}])
|
|
query = """
|
|
mutation CreateOrder($customerId: ID!, $isExternal: Boolean!, $orderLines: [OrderLineInput!]!) {
|
|
createOrder(customerId: $customerId, isExternal: $isExternal, orderLines: $orderLines) {
|
|
... on CreateOrderSuccess {
|
|
order {
|
|
id
|
|
orderSum
|
|
orderlines {
|
|
id
|
|
product {
|
|
id
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
"""
|
|
res = gql_client.query(query, variables)
|
|
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
|