This commit is contained in:
@@ -123,6 +123,37 @@ async def test_new_sto_application_creates_admin_notification(
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_first_vehicle_and_first_record_create_admin_notifications(
|
||||
client, auth_headers, admin_auth_headers, internal_headers
|
||||
) -> None:
|
||||
await ensure_admin(client, internal_headers)
|
||||
vehicle = (
|
||||
await client.post(
|
||||
"/api/cars",
|
||||
headers=auth_headers,
|
||||
json={"name": "First admin-visible car", "current_odometer": 1500},
|
||||
)
|
||||
).json()
|
||||
fuel = await client.post(
|
||||
"/api/fuel",
|
||||
headers=auth_headers,
|
||||
json={
|
||||
"car_id": vehicle["id"],
|
||||
"entry_date": "2026-05-19",
|
||||
"odometer": 1510,
|
||||
"liters": 30,
|
||||
"price_per_liter": 2,
|
||||
},
|
||||
)
|
||||
notifications = await client.get("/api/admin/notifications?limit=100", headers=admin_auth_headers)
|
||||
events = {item["event_type"] for item in notifications.json()["rows"]}
|
||||
|
||||
assert fuel.status_code == 201
|
||||
assert "vehicle_created" in events
|
||||
assert "first_record_created" in events
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_admin_dashboard_requires_admin_role(client, auth_headers, admin_auth_headers, internal_headers) -> None:
|
||||
forbidden = await client.get("/api/admin/dashboard", headers=auth_headers)
|
||||
@@ -389,6 +420,29 @@ async def test_blocked_ocr_upload_creates_admin_notification(
|
||||
assert any(item["event_type"] == "upload_blocked" for item in notifications.json()["rows"])
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_ocr_preview_is_available_in_admin_data_explorer(
|
||||
client, auth_headers, admin_auth_headers, internal_headers
|
||||
) -> None:
|
||||
await ensure_admin(client, internal_headers)
|
||||
|
||||
response = await client.post(
|
||||
"/api/ocr/vin",
|
||||
headers=auth_headers,
|
||||
files={"file": ("vin.txt", b"VIN KMHCT41BAHU123456", "text/plain")},
|
||||
)
|
||||
query = await client.post(
|
||||
"/api/admin/data/query",
|
||||
headers=admin_auth_headers,
|
||||
json={"source": "ocr_results", "category": "vin", "limit": 25},
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert query.status_code == 200
|
||||
assert query.json()["rows"][0]["scope"] == "vin"
|
||||
assert query.json()["rows"][0]["status"] == "preview"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_rate_limit_creates_admin_notification(
|
||||
client, auth_headers, admin_auth_headers, internal_headers
|
||||
|
||||
Reference in New Issue
Block a user