from __future__ import annotations import base64 import json from ui_helpers import ( configuration_required_html, download_html, file_strip_html, header_html, output_progress_html, page_context_html, page_limit_html, progress_html, settings_html, status_html, viewer_html, zoom_width, ) def state() -> dict: return { "name": 'invoice "draft".pdf', "size": 100, "kind": "pdf", "total_pages": 12, "current_page": 0, "pages": [ { "number": 1, "png": b"image", "width": 100, "height": 200, } ], "results": [ { "raw_output": "hello", "output_chars": 5, "boxes": [ { "id": "1", "label": "", "bbox": [0.1, 0.2, 0.8, 0.9], } ], "tables_html": "", "text_html": "

hello

", "elapsed_ms": 12, "model": "parser", "usage": None, "request_id": None, } ], } def test_viewer_embeds_page_and_escapes_labels() -> None: rendered = viewer_html(state(), show_boxes=True, zoom=50) assert base64.b64encode(b"image").decode("ascii") in rendered assert "<unsafe>" in rendered assert "" not in rendered assert 'style="width:100.0%"' in rendered def test_zoom_uses_an_intuitive_control_scale() -> None: assert zoom_width(1) == 51 assert zoom_width(50) == 100 assert zoom_width(100) == 160 assert zoom_width(500) == 160 def test_settings_only_render_the_target_heading() -> None: single_page = state() single_page["total_pages"] = 1 rendered = settings_html(single_page) assert "Configuration" in rendered assert "Parse settings" in rendered assert "Pages" not in rendered def test_idle_status_does_not_render_a_redundant_message() -> None: idle = state() idle["results"] = [None] assert status_html(idle) == "" def test_progress_status_is_visible_and_escapes_its_message() -> None: rendered = progress_html("Preparing ", upload=True) assert 'role="status"' in rendered assert "status-spinner" in rendered assert "Preparing <document>" in rendered assert "Preparing " not in rendered def test_output_progress_describes_the_active_page() -> None: rendered = output_progress_html(2, 3) assert 'role="status"' in rendered assert "Parsing document" in rendered assert "Processing page 2 / 3" in rendered def test_header_uses_parse_brand_and_requested_docs_url() -> None: rendered = header_html() assert "assets/parse-logo.svg" in rendered assert "assets/up_right_arrow.svg" in rendered assert 'href="https://docs.cohere.com/docs/parse"' in rendered assert "assets/cohere-logo.svg" not in rendered def test_configuration_message_names_the_selected_environment_key() -> None: rendered = configuration_required_html("COHERE_API_KEY") assert "COHERE_API_KEY" in rendered assert "Space settings" in rendered def test_configuration_message_rejects_an_invalid_environment() -> None: rendered = configuration_required_html() assert "COHERE_ENV" in rendered assert "staging or production" in rendered def test_file_strip_uses_document_icon_and_metric_badges() -> None: rendered = file_strip_html(state()) assert "assets/filetype_doc.svg" in rendered assert rendered.count('class="metric-badge"') == 3 assert "1/1 PARSED" in rendered def test_page_context_compacts_remaining_pages() -> None: document = state() document["pages"] = document["pages"] * 5 document["results"] = document["results"] * 5 assert page_context_html(document) == "2…5" def test_page_limit_warning_is_persistent_html() -> None: warning = page_limit_html(state()) assert "Only the first 1 pages will be processed" in warning assert "11 pages will" in warning def test_download_contains_structured_results() -> None: rendered = download_html(state()) encoded = rendered.split("base64,", 1)[1].split('"', 1)[0] payload = json.loads(base64.b64decode(encoded)) assert payload["document"]["total_pages"] == 12 assert payload["pages"][0]["text"] == "hello" def test_download_preserves_parse_text_and_structured_response() -> None: document = state() document["results"][0]["text_output"] = "Parsed text" document["results"][0]["response"] = { "id": "parse-123", "pages": [{"index": 0, "type": "blocks", "blocks": []}], } rendered = download_html(document) encoded = rendered.split("base64,", 1)[1].split('"', 1)[0] payload = json.loads(base64.b64decode(encoded)) assert payload["pages"][0]["text"] == "Parsed text" assert payload["pages"][0]["response"]["id"] == "parse-123"