79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
|
|
import pytest
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.mark.anyio
|
||
|
|
async def test_delivered_sales_order_cannot_be_updated_or_deleted(client):
|
||
|
|
payload = {
|
||
|
|
"customer_id": 1,
|
||
|
|
"delivery_date": None,
|
||
|
|
"remark": "test",
|
||
|
|
"items": [
|
||
|
|
{
|
||
|
|
"product_id": None,
|
||
|
|
"product_sku": "MOLD-001",
|
||
|
|
"product_name": "模具001",
|
||
|
|
"product_category": "模具",
|
||
|
|
"product_unit": "套",
|
||
|
|
"quantity": 1,
|
||
|
|
"unit_price": 1000.0,
|
||
|
|
"remark": None,
|
||
|
|
}
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
create_resp = await client.post("/api/sales-orders", json=payload)
|
||
|
|
assert create_resp.status_code == 201
|
||
|
|
order = create_resp.json()
|
||
|
|
order_id = order["id"]
|
||
|
|
|
||
|
|
status_resp = await client.patch(f"/api/sales-orders/{order_id}/status", json={"status": "delivered"})
|
||
|
|
assert status_resp.status_code == 200
|
||
|
|
|
||
|
|
update_resp = await client.put(f"/api/sales-orders/{order_id}", json=payload)
|
||
|
|
assert update_resp.status_code == 400
|
||
|
|
|
||
|
|
delete_resp = await client.delete(f"/api/sales-orders/{order_id}")
|
||
|
|
assert delete_resp.status_code == 400
|
||
|
|
|
||
|
|
patch_resp = await client.patch(f"/api/sales-orders/{order_id}/status", json={"status": "paid"})
|
||
|
|
assert patch_resp.status_code == 400
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.mark.anyio
|
||
|
|
async def test_non_delivered_sales_order_can_be_updated(client):
|
||
|
|
payload = {
|
||
|
|
"customer_id": 1,
|
||
|
|
"delivery_date": None,
|
||
|
|
"remark": "test",
|
||
|
|
"items": [
|
||
|
|
{
|
||
|
|
"product_id": None,
|
||
|
|
"product_sku": "MOLD-002",
|
||
|
|
"product_name": "模具002",
|
||
|
|
"product_category": "模具",
|
||
|
|
"product_unit": "套",
|
||
|
|
"quantity": 1,
|
||
|
|
"unit_price": 2000.0,
|
||
|
|
"remark": None,
|
||
|
|
}
|
||
|
|
],
|
||
|
|
}
|
||
|
|
|
||
|
|
create_resp = await client.post("/api/sales-orders", json=payload)
|
||
|
|
assert create_resp.status_code == 201
|
||
|
|
order_id = create_resp.json()["id"]
|
||
|
|
|
||
|
|
payload2 = {
|
||
|
|
**payload,
|
||
|
|
"remark": "changed",
|
||
|
|
"items": [
|
||
|
|
{
|
||
|
|
**payload["items"][0],
|
||
|
|
"quantity": 2,
|
||
|
|
}
|
||
|
|
],
|
||
|
|
}
|
||
|
|
update_resp = await client.put(f"/api/sales-orders/{order_id}", json=payload2)
|
||
|
|
assert update_resp.status_code == 200
|
||
|
|
assert update_resp.json()["total_amount"] == 4000.0
|