dingdanquanliucheng/backend/tests/test_suppliers.py
2026-06-14 16:20:04 +08:00

77 lines
2.8 KiB
Python

"""FAC-001 ~ FAC-007: 工厂/供应商管理与下发文本测试。
覆盖功能点:
- 供应商 CRUD
- 供应商列表筛选
- 下发文本生成与确认
- 下发文本日志
"""
from __future__ import annotations
import pytest
@pytest.mark.supplier
@pytest.mark.p1
class TestSupplierManagement:
"""FAC-001 ~ FAC-002: 供应商管理测试。"""
def test_create_supplier_success(self, client, admin_headers):
"""FAC-001: 新增供应商成功。"""
resp = client.post("/api/suppliers", headers=admin_headers, json={
"supplier_name": "测试工厂",
"supplier_type": "factory",
"contact_name": "张三",
"contact_mobile": "13900001001",
})
assert resp.status_code == 200
data = resp.json()
assert data["code"] == 0
def test_supplier_list_filter(self, client, admin_headers, make_supplier):
"""FAC-002: 供应商列表筛选。"""
make_supplier(supplier_name="铝板工厂")
make_supplier(supplier_name="钢材工厂")
resp = client.get("/api/suppliers?keyword=铝板", headers=admin_headers)
assert resp.status_code == 200
def test_supplier_detail(self, client, admin_headers, make_supplier):
"""供应商详情。"""
supplier = make_supplier()
resp = client.get(f"/api/suppliers/{supplier.id}", headers=admin_headers)
assert resp.status_code == 200
@pytest.mark.supplier
@pytest.mark.p0
class TestSupplierText:
"""FAC-003 ~ FAC-007: 下发文本测试。"""
def test_generate_supplier_text(self, client, manager_headers, make_order):
"""FAC-003: 生成下发文本成功。"""
order = make_order(order_status="approved")
resp = client.post(f"/api/orders/{order.id}/supplier-text", headers=manager_headers, json={
"supplier_id": order.factory_id,
})
assert resp.status_code == 200
data = resp.json()
assert "text_content" in data["data"]
def test_confirm_supplier_text(self, client, manager_headers, make_order):
"""FAC-004: 确认下发工厂成功。"""
order = make_order(order_status="approved")
resp = client.post(f"/api/orders/{order.id}/supplier-text/confirm", headers=manager_headers, json={
"supplier_id": order.factory_id,
"text_content": "测试下发文本内容",
})
assert resp.status_code == 200
def test_confirm_text_not_approved(self, client, manager_headers, make_order):
"""FAC-005: 非 approved 状态不能确认下发。"""
order = make_order(order_status="draft")
resp = client.post(f"/api/orders/{order.id}/supplier-text/confirm", headers=manager_headers, json={
"supplier_id": order.factory_id,
"text_content": "不应该成功",
})
assert resp.status_code in (400, 409)