File size: 1,487 Bytes
2edb151 676f5d4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | from __future__ import annotations
import json
import pytest
from app.ui import parse_rid, pretty_json, _as_text, _table_rows
def test_pretty_json_indents() -> None:
assert '"vendor": "HEB"' in pretty_json('{"vendor":"HEB"}')
assert '"a": 1' in pretty_json('{"a": 1}')
def test_pretty_json_rejects_garbage() -> None:
with pytest.raises(json.JSONDecodeError):
pretty_json("not json")
def test_parse_rid() -> None:
assert parse_rid("3") == 3
assert parse_rid(3.0) == 3
assert parse_rid("") is None
assert parse_rid(None) is None
def test_as_text_joins_code_widget_lists() -> None:
assert _as_text(["{", "}"]) == "{\n}"
def test_table_rows_from_lists() -> None:
assert _table_rows([["1", "HEB"]]) == [["1", "HEB"]]
def test_phone_page_splits_camera_and_library() -> None:
from app.ui import PHONE_HTML
assert 'id="cam"' in PHONE_HTML
assert 'id="lib"' in PHONE_HTML
assert 'capture="environment"' in PHONE_HTML
cam = PHONE_HTML.split('id="cam"', 1)[1].split("/>", 1)[0]
lib = PHONE_HTML.split('id="lib"', 1)[1].split("/>", 1)[0]
assert "capture=" in cam
assert "capture=" not in lib
assert "accept=\"image/*\"" in cam
assert "input{display:none}" not in PHONE_HTML
assert "opacity:0" in PHONE_HTML
assert "/api/jobs/" in PHONE_HTML
assert "Completed:" in PHONE_HTML
assert "/api/inbox" in PHONE_HTML
assert "Safari" in PHONE_HTML
assert "heic" in PHONE_HTML.lower()
|