You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
be-lcca/tests/e2e/test_masterdata.py

98 lines
3.0 KiB
Python

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