Spaces:
Running
Running
| from __future__ import annotations | |
| from pathlib import Path | |
| REPO_ROOT = Path(__file__).resolve().parents[1] | |
| APP_TEXT = (REPO_ROOT / "presidio_streamlit.py").read_text(encoding="utf-8") | |
| SIDE_BY_SIDE_TEXT = (REPO_ROOT / "side_by_side_review_panel_ui.py").read_text(encoding="utf-8") | |
| def test_review_mode_state_is_captured_from_side_by_side_panel() -> None: | |
| assert "side_by_side_review_state = render_side_by_side_review_panel(" in APP_TEXT | |
| assert 'review_mode = side_by_side_review_state.get("review_mode", "Basiscontrole")' in APP_TEXT | |
| assert 'is_expert_review = review_mode == "Expertcontrole"' in APP_TEXT | |
| assert "is_basic_review = not is_expert_review" in APP_TEXT | |
| def test_basiscontrole_default_and_session_key_remain_in_side_by_side_selector() -> None: | |
| for marker in [ | |
| "Basiscontrole", | |
| "Expertcontrole", | |
| "REVIEW_MODE_OPTIONS", | |
| "index=0", | |
| "solidprivacy_review_mode", | |
| "mode_switch_visibility_only", | |
| ]: | |
| assert marker in SIDE_BY_SIDE_TEXT | |
| def test_basiscontrole_uses_calmer_replacement_table_label() -> None: | |
| assert "replacement_table_label = (" in APP_TEXT | |
| assert "Details aanpassen — vervangtabel" in APP_TEXT | |
| assert "Vervangtabel controleren —" in APP_TEXT | |
| def test_manual_missed_value_entry_remains_available_outside_expert_guard() -> None: | |
| assert 'with st.expander("Gemiste waarde toevoegen", expanded=False):' in APP_TEXT | |
| assert 'with st.expander("Gemiste waarde toevoegen", expanded=False):' in APP_TEXT.split( | |
| 'with st.expander("Extra controlehulpen", expanded=False):' | |
| )[0] | |
| def test_expert_only_review_controls_are_guarded() -> None: | |
| guarded_markers = [ | |
| 'with st.expander("Waarom controleren?"', | |
| 'with st.expander("Extra controlehulpen"', | |
| 'with st.expander("Geavanceerde details bij de vervangtabel"', | |
| "render_serial_review_panel(", | |
| 'with st.expander("Herbruikbare vervangingen"', | |
| 'with st.expander("Technische informatie"', | |
| ] | |
| for marker in guarded_markers: | |
| marker_index = APP_TEXT.find(marker) | |
| assert marker_index >= 0, marker | |
| nearby_prefix = APP_TEXT[max(0, marker_index - 160):marker_index] | |
| assert "if is_expert_review:" in nearby_prefix, marker | |
| assert 'if st_operator not in ("highlight", "synthesize") and is_expert_review:' in APP_TEXT | |
| def test_candidate_values_are_contextual_in_basiscontrole() -> None: | |
| assert "if is_expert_review or candidate_rows:" in APP_TEXT | |
| assert "Mogelijk extra te controleren waarden" in APP_TEXT | |
| assert "Geen mogelijke gemiste referenties gevonden door de auditlaag." in APP_TEXT | |
| def test_document_scrub_key_audit_and_docx_hygiene_remain_available() -> None: | |
| for marker in [ | |
| "Document downloaden", | |
| "Download opgeschoonde tekst (.txt)", | |
| "Download opgeschoond Word-bestand (.docx)", | |
| "Download opgeschoonde PDF (.pdf)", | |
| "Scrub Key downloaden", | |
| "Download Scrub Key (.json)", | |
| "Audit en technische bestanden", | |
| "Download vervangtabel (.csv)", | |
| "Download scrubrapport (.txt)", | |
| "render_docx_hygiene_audit_panel(docx_bytes, source_label=docx_filename)", | |
| ]: | |
| assert marker in APP_TEXT | |
| def test_export_scrub_key_reinsert_and_recognizer_paths_remain_present() -> None: | |
| for marker in [ | |
| "analyze(", | |
| "build_placeholder_replacements", | |
| "apply_replacements_to_text", | |
| "build_bound_scrub_key", | |
| "export_key_json", | |
| "reinsert_from_scrub_key", | |
| "reinsert_docx_bytes", | |
| "reinsert_txt_bytes", | |
| "replacement_report_csv", | |
| "scrub_report_txt", | |
| ]: | |
| assert marker in APP_TEXT | |
| def test_no_nested_expander_grouping_is_introduced() -> None: | |
| lowered = APP_TEXT.lower() | |
| assert 'with st.expander("meer controleopties"' not in lowered | |
| assert 'st.expander("meer controleopties"' not in lowered | |