test_master_data.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from __future__ import annotations
  2. from fastapi.testclient import TestClient
  3. def test_company_crud_flow(client: TestClient) -> None:
  4. create_resp = client.post(
  5. "/api/master-data/companies/",
  6. json={"name": "Supplier A", "remarks": "default vendor"},
  7. )
  8. assert create_resp.status_code == 201
  9. company = create_resp.json()
  10. assert company["name"] == "Supplier A"
  11. list_resp = client.get("/api/master-data/companies/")
  12. assert list_resp.status_code == 200
  13. assert any(item["id"] == company["id"] for item in list_resp.json())
  14. update_resp = client.patch(
  15. f"/api/master-data/companies/{company['id']}",
  16. json={"remarks": "updated note"},
  17. )
  18. assert update_resp.status_code == 200
  19. assert update_resp.json()["remarks"] == "updated note"
  20. dup_resp = client.post(
  21. "/api/master-data/companies/",
  22. json={"name": "Supplier A"},
  23. )
  24. assert dup_resp.status_code == 409
  25. delete_resp = client.delete(f"/api/master-data/companies/{company['id']}")
  26. assert delete_resp.status_code == 204
  27. missing_resp = client.patch(
  28. f"/api/master-data/companies/{company['id']}",
  29. json={"remarks": "should fail"},
  30. )
  31. assert missing_resp.status_code == 404
  32. def test_cargo_crud_flow(client: TestClient) -> None:
  33. create_resp = client.post(
  34. "/api/master-data/cargos/",
  35. json={"name": "Liquid Ammonia", "remarks": "dangerous goods"},
  36. )
  37. assert create_resp.status_code == 201
  38. cargo = create_resp.json()
  39. list_resp = client.get("/api/master-data/cargos/?q=Liquid")
  40. assert list_resp.status_code == 200
  41. assert list_resp.json()[0]["id"] == cargo["id"]
  42. update_resp = client.patch(
  43. f"/api/master-data/cargos/{cargo['id']}",
  44. json={"name": "Liquid Ammonia Revised", "remarks": None},
  45. )
  46. assert update_resp.status_code == 200
  47. assert update_resp.json()["name"] == "Liquid Ammonia Revised"
  48. assert update_resp.json()["remarks"] is None
  49. delete_resp = client.delete(f"/api/master-data/cargos/{cargo['id']}")
  50. assert delete_resp.status_code == 204