Spaces:
Running
Running
File size: 6,042 Bytes
e36915b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | 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
|