from uuid import uuid4 import pytest from fastapi.testclient import TestClient @pytest.fixture def client(api_client: TestClient) -> TestClient: return api_client def _create_scenario(client: TestClient) -> int: payload = { "name": f"Equipment Scenario {uuid4()}", "description": "Scenario for equipment tests", } response = client.post("/api/scenarios/", json=payload) assert response.status_code == 200 return response.json()["id"] def test_create_equipment(client: TestClient) -> None: scenario_id = _create_scenario(client) payload = { "scenario_id": scenario_id, "name": "Excavator", "description": "Heavy machinery", } response = client.post("/api/equipment/", json=payload) assert response.status_code == 200 created = response.json() assert created["id"] > 0 assert created["scenario_id"] == scenario_id assert created["name"] == "Excavator" assert created["description"] == "Heavy machinery" def test_list_equipment_filters_by_scenario(client: TestClient) -> None: target_scenario = _create_scenario(client) other_scenario = _create_scenario(client) for scenario_id, name in [ (target_scenario, "Bulldozer"), (target_scenario, "Loader"), (other_scenario, "Conveyor"), ]: response = client.post( "/api/equipment/", json={ "scenario_id": scenario_id, "name": name, "description": f"Equipment {name}", }, ) assert response.status_code == 200 list_response = client.get("/api/equipment/") assert list_response.status_code == 200 items = [ item for item in list_response.json() if item["scenario_id"] == target_scenario ] assert {item["name"] for item in items} == {"Bulldozer", "Loader"} def test_create_equipment_requires_name(client: TestClient) -> None: scenario_id = _create_scenario(client) response = client.post( "/api/equipment/", json={ "scenario_id": scenario_id, "description": "Missing name", }, ) assert response.status_code == 422