from __future__ import annotations from pathlib import Path REPO_ROOT = Path(__file__).resolve().parents[1] APP = REPO_ROOT / "presidio_streamlit.py" RENDERER = REPO_ROOT / "docx_hygiene_audit_panel_ui.py" STARTUP_PATCH = REPO_ROOT / "fix_streamlit_nested_expanders.py" def _combined_text() -> str: return APP.read_text(encoding="utf-8") + "\n" + RENDERER.read_text(encoding="utf-8") def test_presidio_imports_and_uses_docx_hygiene_audit_panel(): app_text = APP.read_text(encoding="utf-8") assert "from docx_hygiene_audit_panel_ui import render_docx_hygiene_audit_panel" in app_text assert "render_docx_hygiene_audit_panel(" in app_text def test_docx_hygiene_audit_panel_uses_existing_helper(): renderer_text = RENDERER.read_text(encoding="utf-8") assert "from docx_hygiene_audit import build_docx_hygiene_audit_report" in renderer_text assert "build_docx_hygiene_audit_report(" in renderer_text assert "docx_hygiene_audit.py" in renderer_text def test_docx_hygiene_audit_ui_visible_safety_copy_exists(): text = _combined_text() assert "DOCX hygiene audit" in text assert "Alleen rapportage" in text assert "Geen clean-DOCX garantie" in text assert "Export wordt niet geblokkeerd" in text assert "Bestaande export blijft ongewijzigd" in text assert "audit/waarschuwing" in text assert "geen automatische opschoning" in text assert "gebruiker blijft zelf verantwoordelijk" in text.lower() def test_docx_hygiene_audit_ui_mentions_required_risk_areas(): text = _combined_text() assert "metadata" in text assert "opmerkingen" in text assert "revisies" in text assert "verborgen inhoud" in text assert "kopteksten" in text.lower() assert "voetteksten" in text.lower() assert "bijgehouden wijzigingen" in text.lower() def test_docx_hygiene_audit_ui_remains_report_only_and_non_mutating(): renderer_text = RENDERER.read_text(encoding="utf-8") assert "does not clean DOCX content" in renderer_text assert "remove comments" in renderer_text assert "remove tracked changes" in renderer_text assert "remove metadata" in renderer_text assert "block export" in renderer_text assert "write Scrub Key data" in renderer_text assert "change reinsert behavior" in renderer_text assert "Export blocking: false" in renderer_text def test_docx_hygiene_audit_ui_does_not_add_export_blocking_or_cleaner_behavior(): text = _combined_text().lower() forbidden_implementation_markers = [ "export_blocking = true", "export_blocking_applied = true", "cleaning_applied = true", "safe_to_claim_clean = true", "remove_comments(", "remove_tracked_changes(", "remove_metadata(", "clean_docx(", "block_export = true", "download_schone_docx", ] for marker in forbidden_implementation_markers: assert marker not in text def test_docx_hygiene_audit_ui_does_not_change_scrub_key_or_reinsert_behavior(): renderer_text = RENDERER.read_text(encoding="utf-8").lower() forbidden_implementation_markers = [ "scrub_key_to_json(", "build_scrub_key(", "validate_scrub_key(", "reinsert_from_scrub_key(", "reinsert_docx_bytes(", "reinsert_txt_bytes(", "st.session_state[\"scrub_key", ] for marker in forbidden_implementation_markers: assert marker not in renderer_text def test_docx_hygiene_audit_ui_does_not_use_cloud_or_real_data(): rendered = _combined_text() + "\n" + Path(__file__).read_text(encoding="utf-8") lowered = rendered.lower() assert "no cloud processing" in lowered or "cloud services" in lowered assert "real data" in lowered forbidden_real_data_examples = [ "Jan " + "Jansen", "Piet " + "de " + "Vries", "123" + "456" + "782", ] for forbidden in forbidden_real_data_examples: assert forbidden not in rendered def test_docx_hygiene_audit_ui_does_not_use_startup_source_mutation(): renderer_text = RENDERER.read_text(encoding="utf-8") startup_text = STARTUP_PATCH.read_text(encoding="utf-8") assert "docx_hygiene_audit_panel_ui" not in startup_text assert "DOCX hygiene audit" not in startup_text assert "APP_FILE.write_text" not in renderer_text assert "replace_once(" not in renderer_text def test_docx_hygiene_audit_ui_does_not_implement_blocked_review_features(): renderer_text = RENDERER.read_text(encoding="utf-8").lower() assert "click-to-mark" not in renderer_text assert "advanced editor" not in renderer_text assert "full-document marking" not in renderer_text assert "unsafe_allow_html" not in renderer_text