scrub / tests /test_scrub_key_reinsert_ui_patch.py
solidprivacy-nl
Add deterministic reinsert UI patch tests
22400b7
Raw
History Blame
4.29 kB
from pathlib import Path
PATCH_TEXT = Path("fix_streamlit_nested_expanders.py").read_text(encoding="utf-8")
def test_reinsert_helper_is_imported_and_used_by_streamlit_patch():
assert "from scrub_key_reinsert import reinsert_from_scrub_key" in PATCH_TEXT
assert "reinsert_from_scrub_key(reinsert_input_text, active_reinsert_scrub_key)" in PATCH_TEXT
def test_reinsert_ui_labels_are_present():
assert "Originele waarden terugzetten" in PATCH_TEXT
assert "Plak hier de tekst waarin u originele waarden lokaal wilt terugzetten" in PATCH_TEXT
assert "Zet originele waarden lokaal terug" in PATCH_TEXT
assert "Herstelde tekst" in PATCH_TEXT
assert "Download herstelde tekst (.txt)" in PATCH_TEXT
def test_reinsert_warning_mentions_sensitive_and_confidential_output():
assert "terugzetten herstelt originele gevoelige waarden" in PATCH_TEXT
assert "persoonsgegevens of vertrouwelijke informatie" in PATCH_TEXT
assert "Controleer het resultaat zorgvuldig voordat u het deelt" in PATCH_TEXT
def test_reinsert_ui_contains_local_only_no_ai_no_cloud_wording():
assert "lokaal uitgevoerd" in PATCH_TEXT.lower()
assert "geen AI- of cloudverwerking" in PATCH_TEXT
assert "AI-verwerking" in PATCH_TEXT
assert "Cloudverwerking" in PATCH_TEXT
def test_reinsert_requires_explicit_button_before_helper_call():
button_index = PATCH_TEXT.index('st.button("Zet originele waarden lokaal terug", key="run_local_reinsert")')
helper_index = PATCH_TEXT.index("reinsert_from_scrub_key(reinsert_input_text, active_reinsert_scrub_key)")
assert button_index < helper_index
def test_reinsert_ui_shows_required_audit_summary_fields():
for marker in [
"Controleverslag terugzetten",
"Mappingregels totaal",
"Actieve mappingregels",
"Uitgesloten mappingregels",
"Aantal teruggezette waarden",
"Niet gevonden placeholders",
"Onbekende placeholders in tekst",
"Dubbele placeholders in sleutel",
"Validatieproblemen",
"Lokaal uitgevoerd",
"AI-verwerking",
"Cloudverwerking",
"replacement_count",
"item_count",
"active_item_count",
"excluded_item_count",
"placeholders_not_found",
"unknown_placeholders",
"duplicate_placeholders",
"validation_issues",
"local_only",
"ai_processing",
"cloud_processing",
]:
assert marker in PATCH_TEXT
def test_reinsert_ui_keeps_existing_scrub_key_export_and_import_labels():
assert "Scrub Key (JSON)" in PATCH_TEXT
assert "Download Scrub Key (.json)" in PATCH_TEXT
assert "Scrub Key laden" in PATCH_TEXT
assert "Upload Scrub Key JSON (.json)" in PATCH_TEXT
assert "Of plak Scrub Key JSON" in PATCH_TEXT
assert "Valideer en laad Scrub Key" in PATCH_TEXT
def test_reinsert_ui_keeps_existing_download_and_export_markers_unblocked():
assert 'st.subheader("4. Download opgeschoonde bestanden")' in PATCH_TEXT
assert "Eindcontrole v贸贸r download" in PATCH_TEXT
assert "Extra exportcontrole" in PATCH_TEXT
assert "st.warning(EXPORT_GUIDANCE)" in PATCH_TEXT
assert "st.stop()" not in PATCH_TEXT
assert "blocks_export = True" not in PATCH_TEXT
assert "changes_export_semantics = True" not in PATCH_TEXT
def test_reinsert_ui_does_not_add_ai_calls_cloud_calls_or_document_rehydration():
forbidden_markers = [
"openai",
"anthropic",
"requests.post",
"httpx.post",
"cloud processing call",
"rehydrat",
"restore_original_document",
"download_docx_reinserted",
"download_pdf_reinserted",
]
lower_patch = PATCH_TEXT.lower()
for marker in forbidden_markers:
assert marker.lower() not in lower_patch
def test_reinsert_patch_does_not_alter_existing_replacement_application_or_scrubbed_download_functions():
assert "def apply_replacements_to_text" not in PATCH_TEXT
assert "apply_replacements_to_text =" not in PATCH_TEXT
assert "export_text = apply_replacements_to_text" not in PATCH_TEXT
assert "download_txt" not in PATCH_TEXT
assert "download_csv" not in PATCH_TEXT
assert "download_docx" not in PATCH_TEXT
assert "download_pdf" not in PATCH_TEXT