from __future__ import annotations from fastapi.testclient import TestClient def test_company_crud_flow(client: TestClient) -> None: create_resp = client.post( "/api/master-data/companies/", json={"name": "Supplier A", "remarks": "default vendor"}, ) assert create_resp.status_code == 201 company = create_resp.json() assert company["name"] == "Supplier A" list_resp = client.get("/api/master-data/companies/") assert list_resp.status_code == 200 assert any(item["id"] == company["id"] for item in list_resp.json()) update_resp = client.patch( f"/api/master-data/companies/{company['id']}", json={"remarks": "updated note"}, ) assert update_resp.status_code == 200 assert update_resp.json()["remarks"] == "updated note" dup_resp = client.post( "/api/master-data/companies/", json={"name": "Supplier A"}, ) assert dup_resp.status_code == 409 delete_resp = client.delete(f"/api/master-data/companies/{company['id']}") assert delete_resp.status_code == 204 missing_resp = client.patch( f"/api/master-data/companies/{company['id']}", json={"remarks": "should fail"}, ) assert missing_resp.status_code == 404 def test_cargo_crud_flow(client: TestClient) -> None: create_resp = client.post( "/api/master-data/cargos/", json={"name": "Liquid Ammonia", "remarks": "dangerous goods"}, ) assert create_resp.status_code == 201 cargo = create_resp.json() list_resp = client.get("/api/master-data/cargos/?q=Liquid") assert list_resp.status_code == 200 assert list_resp.json()[0]["id"] == cargo["id"] update_resp = client.patch( f"/api/master-data/cargos/{cargo['id']}", json={"name": "Liquid Ammonia Revised", "remarks": None}, ) assert update_resp.status_code == 200 assert update_resp.json()["name"] == "Liquid Ammonia Revised" assert update_resp.json()["remarks"] is None delete_resp = client.delete(f"/api/master-data/cargos/{cargo['id']}") assert delete_resp.status_code == 204