From 6e7892e86207216f75ebb3091a954b72f0cfdb54 Mon Sep 17 00:00:00 2001 From: Kawa Date: Fri, 10 Apr 2026 13:04:01 +0200 Subject: [PATCH] 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 --- tests/test_printer_crud.py | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/tests/test_printer_crud.py b/tests/test_printer_crud.py index c194780..3529b34 100644 --- a/tests/test_printer_crud.py +++ b/tests/test_printer_crud.py @@ -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