import pytest from httpx import AsyncClient import uuid @pytest.mark.asyncio async def test_create_masterdata(client: AsyncClient): payload = { "name": "Test Master Data", "description": "Test Description", "unit_of_measurement": "unit", "value_num": 100.0, "value_str": "100", "seq": 1 } response = await client.post("/masterdata", json=payload) assert response.status_code == 200 data = response.json() assert data["message"] == "Data created successfully" assert data["data"]["name"] == "Test Master Data" assert "id" in data["data"] return data["data"]["id"] @pytest.mark.asyncio async def test_get_masterdatas(client: AsyncClient): # First create one await client.post("/masterdata", json={ "name": "Data 1", "description": "Desc 1", "unit_of_measurement": "u", "value_num": 1.0, "seq": 1 }) response = await client.get("/masterdata") assert response.status_code == 200 data = response.json() assert data["message"] == "Data retrieved successfully" assert len(data["data"]["items"]) >= 1 @pytest.mark.asyncio async def test_get_masterdata_by_id(client: AsyncClient): # Create one create_resp = await client.post("/masterdata", json={ "name": "Data By ID", "description": "Desc", "unit_of_measurement": "u", "value_num": 2.0, "seq": 2 }) masterdata_id = create_resp.json()["data"]["id"] response = await client.get(f"/masterdata/{masterdata_id}") assert response.status_code == 200 assert response.json()["data"]["name"] == "Data By ID" @pytest.mark.asyncio async def test_update_masterdata(client: AsyncClient): # Create one create_resp = await client.post("/masterdata", json={ "name": "Old Name", "description": "Desc", "unit_of_measurement": "u", "value_num": 3.0, "seq": 3 }) masterdata_id = create_resp.json()["data"]["id"] # Update it update_payload = { "name": "New Name", "value_num": 4.0 } response = await client.post(f"/masterdata/update/{masterdata_id}", json=update_payload) assert response.status_code == 200 assert response.json()["data"]["name"] == "New Name" assert response.json()["data"]["value_num"] == 4.0 @pytest.mark.asyncio async def test_delete_masterdata(client: AsyncClient): # Create one create_resp = await client.post("/masterdata", json={ "name": "To Be Deleted", "description": "Desc", "unit_of_measurement": "u", "value_num": 5.0, "seq": 5 }) masterdata_id = create_resp.json()["data"]["id"] # Delete it response = await client.post(f"/masterdata/delete/{masterdata_id}") assert response.status_code == 200 assert response.json()["message"] == "Data deleted successfully" # Verify it's gone get_resp = await client.get(f"/masterdata/{masterdata_id}") assert get_resp.status_code == 404