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.
98 lines
3.0 KiB
Python
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
|