Spaces:
Running
Running
| from __future__ import annotations | |
| from pathlib import Path | |
| REPO_ROOT = Path(__file__).resolve().parents[1] | |
| APP = REPO_ROOT / "presidio_streamlit.py" | |
| DOCKERFILE = REPO_ROOT / "Dockerfile" | |
| SERIAL_PANEL = REPO_ROOT / "serial_review_panel_ui.py" | |
| def _app_text() -> str: | |
| return APP.read_text(encoding="utf-8") | |
| def test_default_flow_is_shorter_and_execution_oriented() -> None: | |
| text = _app_text() | |
| assert 'st.subheader("1. Voeg document of tekst toe")' in text | |
| assert 'st.subheader("2. Controleer resultaat")' in text | |
| assert 'st.subheader("3. Exporteer resultaat")' in text | |
| assert 'st.subheader("2. Controleer de tekst")' not in text | |
| assert 'st.subheader("3. Controleer gevonden gegevens")' not in text | |
| assert 'st.subheader("4. Onthoud herbruikbare vervangingen")' not in text | |
| assert 'st.subheader("5. Exporteer resultaat")' not in text | |
| def test_secondary_controls_are_collapsed_but_available() -> None: | |
| text = _app_text() | |
| serial_text = SERIAL_PANEL.read_text(encoding="utf-8") | |
| for marker in [ | |
| 'with st.sidebar.expander("Wat doet deze controlemodus?", expanded=False)', | |
| 'with st.expander("Controle-instellingen en herkenning", expanded=False)', | |
| 'with st.expander("Waarom controleren?", expanded=False)', | |
| 'with st.expander("Gemiste waarde toevoegen", expanded=False)', | |
| 'with st.expander("Extra controlehulpen", expanded=False)', | |
| 'with st.expander("Mogelijk extra te controleren waarden", expanded=False)', | |
| 'with st.expander(f"Vervangtabel controleren — {len(replacement_editor_df.index)} items", expanded=False)', | |
| 'with st.expander("Geavanceerde details bij de vervangtabel", expanded=False)', | |
| 'with st.expander("Herbruikbare vervangingen", expanded=False)', | |
| 'with st.expander("Scrub Key downloaden", expanded=False)', | |
| 'with st.expander("Audit en technische bestanden", expanded=False)', | |
| ]: | |
| assert marker in text | |
| assert 'with st.expander("Stap voor stap controleren", expanded=False)' in serial_text | |
| def test_review_table_manual_entry_and_source_of_truth_remain() -> None: | |
| text = _app_text() | |
| assert "manual_mask_entry_form" in text | |
| assert "Toevoegen aan vervangtabel" in text | |
| assert "replacement_editor" in text | |
| assert "st.data_editor(" in text | |
| assert "De vervangtabel blijft leidend" in text | |
| assert "edited_replacements_df = st.data_editor(" in text | |
| assert "export_text = apply_replacements_to_text(st_text, edited_replacements)" in text | |
| def test_export_buttons_keys_and_filenames_remain_unchanged() -> None: | |
| text = _app_text() | |
| for marker in [ | |
| 'label="Download opgeschoonde tekst (.txt)"', | |
| 'file_name="opgeschoonde_tekst.txt"', | |
| 'key="download_txt"', | |
| 'label="Download opgeschoond Word-bestand (.docx)"', | |
| 'key="download_docx"', | |
| 'label="Download opgeschoonde PDF (.pdf)"', | |
| 'file_name="opgeschoonde_tekst.pdf"', | |
| 'key="download_pdf"', | |
| 'label="Download vervangtabel (.csv)"', | |
| 'file_name="vervangtabel.csv"', | |
| 'key="download_csv"', | |
| 'label="Download scrubrapport (.txt)"', | |
| 'file_name="scrubrapport.txt"', | |
| 'key="download_scrub_report"', | |
| ]: | |
| assert marker in text | |
| def test_scrub_key_warning_and_semantics_remain_available() -> None: | |
| text = _app_text() | |
| assert "De Scrub Key kan originele waarden herstellen. Bewaar dit bestand veilig." in text | |
| assert "scrub_key_rows = edited_replacements_df.copy()" in text | |
| assert '"find": "original_value"' in text | |
| assert '"replace_with": "placeholder"' in text | |
| assert "build_export_scrub_key(scrub_key_rows)" in text | |
| assert "validate_export_scrub_key(scrub_key)" in text | |
| assert "export_key_json(scrub_key)" in text | |
| assert '"Download Scrub Key (.json)"' in text | |
| assert 'file_name="solidprivacy_scrub_key.json"' in text | |
| assert 'key="download_scrub_key"' in text | |
| def test_no_startup_runtime_patch_or_blocked_ui_features_added() -> None: | |
| combined = (_app_text() + "\n" + DOCKERFILE.read_text(encoding="utf-8")).lower() | |
| forbidden = [ | |
| "execution_interface_simplification_patch", | |
| "fix_streamlit_execution_interface_simplification", | |
| "sitecustomize", | |
| "runtime source mutation", | |
| "right-click", | |
| "click-to-mark", | |
| "full-document marking", | |
| "cloud document processing", | |
| ] | |
| for marker in forbidden: | |
| assert marker not in combined | |