77 lines
2.8 KiB
Python
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)
|