Spaces:
Running
Running
| from pathlib import Path | |
| PATCH_TEXT = Path("fix_streamlit_nested_expanders.py").read_text(encoding="utf-8") | |
| def _slice_between(start_marker: str, end_marker: str) -> str: | |
| start = PATCH_TEXT.index(start_marker) | |
| end = PATCH_TEXT.index(end_marker, start) | |
| return PATCH_TEXT[start:end] | |
| def _docx_reinsert_block() -> str: | |
| return _slice_between("docx_reinsert_ui_block = '''", "'''\n\nreview_summary_block =") | |
| def test_docx_reinsert_helper_is_imported_and_used(): | |
| assert "from scrub_key_document_reinsert import reinsert_docx_bytes, reinsert_txt_bytes" in PATCH_TEXT | |
| assert "reinsert_docx_bytes(" in PATCH_TEXT | |
| assert "docx_reinsert_file.getvalue()" in PATCH_TEXT | |
| def test_docx_reinsert_ui_labels_are_present(): | |
| for marker in [ | |
| "DOCX-bestand terugzetten", | |
| "Upload een DOCX-bestand met placeholders", | |
| "Zet DOCX-bestand lokaal terug", | |
| "DOCX-bestand lokaal teruggezet", | |
| "Download hersteld DOCX-bestand (.docx)", | |
| "Controleverslag DOCX terugzetten", | |
| ]: | |
| assert marker in PATCH_TEXT | |
| def test_docx_reinsert_accepts_docx_only_and_requires_key(): | |
| docx_block = _docx_reinsert_block() | |
| assert 'type=["docx"]' in docx_block | |
| assert "Laad eerst een geldige Scrub Key" in docx_block | |
| assert "Upload eerst een DOCX-bestand met placeholders" in docx_block | |
| assert "active_docx_reinsert_scrub_key" in docx_block | |
| assert 'st.session_state.get("active_scrub_key", {})' in docx_block | |
| def test_docx_reinsert_is_injected_inside_reinsert_mode_only(): | |
| mode_start = PATCH_TEXT.index("two_mode_selection_block = '''") | |
| mode_end = PATCH_TEXT.index("mode_marker =", mode_start) | |
| mode_block = PATCH_TEXT[mode_start:mode_end] | |
| mode_index = mode_block.index('if solidprivacy_work_mode == "Originele waarden terugzetten":') | |
| docx_injection_index = mode_block.index("scrub_key_import_ui_block + reinsert_ui_block + txt_reinsert_ui_block + docx_reinsert_ui_block") | |
| else_index = mode_block.index("'''else:\n'''") | |
| assert mode_index < docx_injection_index < else_index | |
| review_summary_start = PATCH_TEXT.index("review_summary_block =") | |
| review_summary_end = PATCH_TEXT.index("text = replace_once(\n text,\n ''' st.subheader", review_summary_start) | |
| review_summary_block = PATCH_TEXT[review_summary_start:review_summary_end] | |
| assert "DOCX-bestand terugzetten" not in review_summary_block | |
| assert "Download hersteld DOCX-bestand (.docx)" not in review_summary_block | |
| def test_docx_limitations_warning_is_present(): | |
| docx_block = _docx_reinsert_block() | |
| assert "DOCX-terugzetten ondersteunt in deze versie normale documenttekst en tabellen" in docx_block | |
| assert "Headers, footers, opmerkingen, bijgehouden wijzigingen" in docx_block | |
| assert "meerdere tekstfragmenten" in docx_block | |
| assert "DOCX-beperkingen" in docx_block | |
| assert "limitations" in docx_block | |
| def test_docx_reinsert_audit_summary_fields_are_present(): | |
| docx_block = _docx_reinsert_block() | |
| for marker in [ | |
| "Documenttype", | |
| "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", | |
| "DOCX-beperkingen", | |
| "document_type", | |
| "item_count", | |
| "active_item_count", | |
| "excluded_item_count", | |
| "replacement_count", | |
| "placeholders_not_found", | |
| "unknown_placeholders", | |
| "duplicate_placeholders", | |
| "validation_issues", | |
| "local_only", | |
| "ai_processing", | |
| "cloud_processing", | |
| "limitations", | |
| ]: | |
| assert marker in docx_block | |
| def test_pasted_text_txt_reinsert_and_scrub_key_load_remain_present(): | |
| for marker in [ | |
| "Scrub Key laden", | |
| "Upload Scrub Key JSON (.json)", | |
| "Of plak Scrub Key JSON", | |
| "Valideer en laad Scrub Key", | |
| "Plak hier de tekst waarin u originele waarden lokaal wilt terugzetten", | |
| "Zet originele waarden lokaal terug", | |
| "Herstelde tekst", | |
| "Download herstelde tekst (.txt)", | |
| "TXT-bestand terugzetten", | |
| "Upload een TXT-bestand met placeholders", | |
| "Zet TXT-bestand lokaal terug", | |
| "Herstelde TXT-tekst", | |
| "Download hersteld TXT-bestand (.txt)", | |
| ]: | |
| assert marker in PATCH_TEXT | |
| def test_anonymization_mode_and_existing_exports_remain_present(): | |
| for marker in [ | |
| "Anonimiseren", | |
| "Originele waarden terugzetten", | |
| "Kies werkmodus", | |
| 'st.subheader("4. Download opgeschoonde bestanden")', | |
| "Download opgeschoonde bestanden", | |
| "Eindcontrole vóór download", | |
| "Extra exportcontrole", | |
| "Scrub Key (JSON)", | |
| "Download Scrub Key (.json)", | |
| "st.warning(EXPORT_GUIDANCE)", | |
| ]: | |
| assert marker in PATCH_TEXT | |
| def test_no_pdf_ai_cloud_or_export_rewire_added(): | |
| lower_patch = PATCH_TEXT.lower() | |
| for marker in [ | |
| "download_pdf_reinserted", | |
| "PDF reinsert", | |
| "pdf reinsert", | |
| "requests.post", | |
| "httpx.post", | |
| "cloud processing call", | |
| "restore_original_document", | |
| "server-side key storage", | |
| "durable key vault", | |
| "openai", | |
| "anthropic", | |
| ]: | |
| assert marker.lower() not in lower_patch | |
| assert "st.stop()" not in PATCH_TEXT | |
| assert "blocks_export = True" not in PATCH_TEXT | |
| assert "changes_export_semantics = True" not in PATCH_TEXT | |
| 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 | |