"""Tests for printer form template wiring — inline driver upload + OOB select."""
from fastapi.testclient import TestClient


def test_printer_form_has_inline_driver_upload(client: TestClient) -> None:
    """GET /printers renders printer form with:
    - Driver <select> with stable id="printer-form-driver-select"
    - Inline upload form with caller=printer_form hidden field
    - hx-post="/drivers/upload" NOT nested inside the printer <form>
    """
    resp = client.get("/printers")
    assert resp.status_code == 200
    html = resp.text

    # Driver select has stable id for OOB swap target
    assert 'id="printer-form-driver-select"' in html, (
        "Printer form driver <select> must have id=\"printer-form-driver-select\" "
        "for HTMX OOB swap to work"
    )

    # Inline upload form posts caller=printer_form sentinel
    assert 'name="caller"' in html, "Inline upload form missing name=\"caller\" field"
    assert 'value="printer_form"' in html, (
        "Inline upload form missing value=\"printer_form\" sentinel"
    )

    # Inline upload form targets /drivers/upload
    assert 'hx-post="/drivers/upload"' in html, (
        "Inline upload form missing hx-post=\"/drivers/upload\""
    )

    # CRITICAL: hx-post="/drivers/upload" must NOT be nested inside the printer form.
    # Split on the printer form boundary and verify the upload endpoint is not inside it.
    # The printer form always starts with hx-post="/printers" and ends at its </form>.
    printer_form_start = html.find('hx-post="/printers"')
    assert printer_form_start != -1, "Printer form hx-post not found — template changed?"

    # Find the first </form> after the printer form opening tag
    printer_form_end = html.find("</form>", printer_form_start)
    assert printer_form_end != -1, "Printer form closing </form> not found"

    printer_form_chunk = html[printer_form_start:printer_form_end]
    assert 'hx-post="/drivers/upload"' not in printer_form_chunk, (
        "hx-post=\"/drivers/upload\" must NOT be nested inside the printer <form> — "
        "HTML forbids nested forms and browsers silently ignore the inner one"
    )
