cohere-parse / tests /test_ui_helpers.py
dennis-zhao's picture
Migrate to the Parse API
270d701 verified
Raw History Blame Contribute Delete
5.12 kB
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": "<unsafe>",
"bbox": [0.1, 0.2, 0.8, 0.9],
}
],
"tables_html": "",
"text_html": "<p>hello</p>",
"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 "&lt;unsafe&gt;" in rendered
assert "<unsafe>" 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 <document>", upload=True)
assert 'role="status"' in rendered
assert "status-spinner" in rendered
assert "Preparing &lt;document&gt;" in rendered
assert "Preparing <document>" 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) == "<span>2</span><span>…</span><span>5</span>"
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"