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."""
|
||||
import json
|
||||
|
||||
import pytest
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
@@ -181,6 +183,54 @@ def test_create_printer_invalid_ip(client: TestClient) -> None:
|
||||
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:
|
||||
"""DELETE /printers/{id} removes the printer; GET /printers no longer shows it."""
|
||||
from imptune.db.models import Printer
|
||||
|
||||
Reference in New Issue
Block a user