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()