test(03-02): add failing tests for printer detail page

- test_printer_detail_shows_driver: asserts driver name appears on detail page
- test_printer_detail_not_found: asserts 404 for missing printer ID
- test_printer_detail_no_driver: asserts graceful display when driver is None
This commit is contained in:
2026-04-10 13:04:01 +02:00
parent 3b644272e7
commit 6e7892e862
+50
View File
@@ -1,4 +1,6 @@
"""Integration tests for printer and client CRUD endpoints.""" """Integration tests for printer and client CRUD endpoints."""
import json
import pytest import pytest
from fastapi.testclient import TestClient from fastapi.testclient import TestClient
@@ -181,6 +183,54 @@ def test_create_printer_invalid_ip(client: TestClient) -> None:
assert resp.status_code == 400 assert resp.status_code == 400
def test_printer_detail_shows_driver(client: TestClient) -> None:
"""GET /printers/{id} returns 200 with all printer fields and driver name."""
from imptune.db.models import Driver, Printer
driver_obj = Driver.create(
sha256="abc123",
original_filename="hp_universal.zip",
size_bytes=1000,
driver_desc=json.dumps(["HP Universal"]),
)
printer = Printer.create(
name="HP Office Printer",
ip_address="10.0.1.1",
port_name="IP_10_0_1_1",
driver=driver_obj,
)
resp = client.get(f"/printers/{printer.id}")
assert resp.status_code == 200
html = resp.text
assert "HP Office Printer" in html
assert "10.0.1.1" in html
assert "HP Universal" in html
def test_printer_detail_not_found(client: TestClient) -> None:
"""GET /printers/9999 returns 404."""
resp = client.get("/printers/9999")
assert resp.status_code == 404
def test_printer_detail_no_driver(client: TestClient) -> None:
"""GET /printers/{id} for printer with no driver returns 200 with 'No driver assigned'."""
from imptune.db.models import Printer
printer = Printer.create(
name="Driverless Printer",
ip_address="10.0.1.2",
port_name="IP_10_0_1_2",
driver=None,
)
resp = client.get(f"/printers/{printer.id}")
assert resp.status_code == 200
html = resp.text
assert "No driver assigned" in html
def test_delete_printer(client: TestClient) -> None: def test_delete_printer(client: TestClient) -> None:
"""DELETE /printers/{id} removes the printer; GET /printers no longer shows it.""" """DELETE /printers/{id} removes the printer; GET /printers no longer shows it."""
from imptune.db.models import Printer from imptune.db.models import Printer