Files
orders/orders_app/tests.py
2026-01-07 09:16:11 +07:00

119 lines
4.2 KiB
Python

from django.test import TestCase
from graphene.test import Client
from orders_app.schema import schema
class OrdersGraphQLTestCase(TestCase):
def setUp(self):
self.client = Client(schema)
def test_get_team_orders(self):
"""Тест getTeamOrders"""
query = '''
{
getTeamOrders(teamUuid: "4993148a-cd2b-4987-b3f2-0f92b7479885") {
uuid
name
totalAmount
sourceLocationName
destinationLocationName
orderLines {
productName
quantity
unit
}
stages {
name
stageType
transportType
}
}
}
'''
result = self.client.execute(query)
print(f"\n=== TEAM ORDERS TEST ===")
print(f"Result: {result}")
if result.get('errors'):
print(f"ERRORS: {result['errors']}")
if result.get('data'):
orders = result['data']['getTeamOrders']
print(f"Found {len(orders)} orders")
for order in orders:
print(f"Order: {order.get('name')} - {order.get('totalAmount')}")
if order.get('stages'):
print(f" Stages: {len(order['stages'])}")
def test_get_order_single(self):
"""Тест getOrder для конкретного заказа"""
query = '''
{
getOrder(orderUuid: "order-coffee-kenya-2024") {
uuid
name
totalAmount
sourceLocationName
destinationLocationName
orderLines {
productName
quantity
unit
}
stages {
name
stageType
transportType
trips {
name
company {
name
}
plannedWeight
weightAtLoading
}
}
}
}
'''
result = self.client.execute(query)
print(f"\n=== SINGLE ORDER TEST ===")
print(f"Result: {result}")
if result.get('errors'):
print(f"ERRORS: {result['errors']}")
if result.get('data') and result['data']['getOrder']:
order = result['data']['getOrder']
print(f"Order: {order.get('name')}")
print(f"Amount: {order.get('totalAmount')}")
print(f"Route: {order.get('sourceLocationName')}{order.get('destinationLocationName')}")
if order.get('orderLines'):
print(f"Order lines: {len(order['orderLines'])}")
for line in order['orderLines']:
print(f" - {line.get('productName')}: {line.get('quantity')} {line.get('unit')}")
if order.get('stages'):
print(f"Stages: {len(order['stages'])}")
for stage in order['stages']:
print(f" - {stage.get('name')} ({stage.get('stageType')})")
if stage.get('trips'):
print(f" Trips: {len(stage['trips'])}")
def test_schema_types(self):
"""Тест доступных типов в схеме"""
query = '{ __schema { types { name } } }'
result = self.client.execute(query)
print(f"\n=== SCHEMA TYPES ===")
if result.get('data'):
types = [t['name'] for t in result['data']['__schema']['types']]
print(f"Available types: {types}")
# Проверяем что есть нужные типы
required_types = ['OrderType', 'StageType', 'TripType', 'CompanyType']
for req_type in required_types:
if req_type in types:
print(f"{req_type} - OK")
else:
print(f"{req_type} - MISSING")