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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user