Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| from pathlib import Path | |
| REPO_ROOT = Path(__file__).resolve().parents[1] | |
| SIDE_BY_SIDE_TEXT = (REPO_ROOT / "side_by_side_review_panel_ui.py").read_text(encoding="utf-8") | |
| APP_TEXT = (REPO_ROOT / "presidio_streamlit.py").read_text(encoding="utf-8") | |
| CONTRACT_TEXT = (REPO_ROOT / "tests/test_basic_expert_review_mode_contracts.py").read_text(encoding="utf-8") | |
| def test_review_mode_selector_is_visible_and_defaults_to_basiscontrole() -> None: | |
| assert "def render_review_mode_selector" in SIDE_BY_SIDE_TEXT | |
| assert "Controleweergave" in SIDE_BY_SIDE_TEXT | |
| assert "Basiscontrole" in SIDE_BY_SIDE_TEXT | |
| assert "Expertcontrole" in SIDE_BY_SIDE_TEXT | |
| assert "REVIEW_MODE_OPTIONS" in SIDE_BY_SIDE_TEXT | |
| assert "index=0" in SIDE_BY_SIDE_TEXT | |
| assert "solidprivacy_review_mode" in SIDE_BY_SIDE_TEXT | |
| def test_mode_selector_is_visibility_only() -> None: | |
| for marker in [ | |
| "Deze keuze wijzigt alleen zichtbaarheid en groepering.", | |
| "mode_switch_visibility_only", | |
| '"mutation_allowed": False', | |
| '"review_table_mutation": False', | |
| '"replacement_mutation": False', | |
| '"scrub_key_writes": False', | |
| '"export_download_behavior_change": False', | |
| '"reinsert_behavior_change": False', | |
| ]: | |
| assert marker in SIDE_BY_SIDE_TEXT | |
| def test_basis_and_expert_copy_explain_user_paths() -> None: | |
| for marker in [ | |
| "Basiscontrole: controleer de gemarkeerde tekst", | |
| "voeg gemiste waarden toe", | |
| "download daarna veilig", | |
| "Expertcontrole: alle detailcontroles", | |
| "auditinformatie", | |
| "technische hulpmiddelen", | |
| ]: | |
| assert marker in SIDE_BY_SIDE_TEXT | |
| def test_side_by_side_review_remains_primary_surface() -> None: | |
| for marker in [ | |
| "Markeringen tonen", | |
| "Brontekst", | |
| "Verwerkte tekst", | |
| "render_side_by_side_review_panel", | |
| "build_side_by_side_review_model", | |
| "build_preview_text", | |
| ]: | |
| assert marker in SIDE_BY_SIDE_TEXT | |
| def test_existing_app_processing_and_export_paths_are_not_changed_by_mode_selector() -> None: | |
| for marker in [ | |
| "analyze(", | |
| "build_placeholder_replacements", | |
| "apply_replacements_to_text", | |
| "build_bound_scrub_key", | |
| "export_key_json", | |
| "reinsert_from_scrub_key", | |
| "Document downloaden", | |
| "Scrub Key downloaden", | |
| "Audit en technische bestanden", | |
| ]: | |
| assert marker in APP_TEXT | |
| def test_contract_tests_remain_the_guardrail_for_future_deeper_split() -> None: | |
| for marker in [ | |
| "Basiscontrole is not weaker review.", | |
| "Switching modes changes visibility/grouping only.", | |
| "Implementation must not start until contract tests are merged.", | |
| "no export/Scrub Key/reinsert/recognizer/benchmark/runtime semantics changed", | |
| ]: | |
| assert marker in CONTRACT_TEXT | |
| def test_no_prohibited_behavior_is_introduced_in_review_mode_ui() -> None: | |
| lower = SIDE_BY_SIDE_TEXT.lower() | |
| for forbidden in [ | |
| "cloud processing", | |
| "ai processing", | |
| "ocr", | |
| "restored pdf", | |
| "pdf-to-docx", | |
| "click-to-mark", | |
| "advanced editor", | |
| "full-document marking", | |
| "hidden export gate", | |
| ]: | |
| assert forbidden not in lower | |