scrub / tests /test_frontend_architecture_decision.py
solidprivacy-nl
Add WP43 frontend architecture decision tests
70dafad
Raw
History Blame Contribute Delete
3.06 kB
from __future__ import annotations
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
DECISION = REPO_ROOT / "FRONTEND_ARCHITECTURE_DECISION.md"
def _text() -> str:
return DECISION.read_text(encoding="utf-8")
def test_wp43_keeps_streamlit_for_mvp_and_rejects_frontend_migration_now():
text = _text().lower()
assert "keep streamlit as the mvp validation surface for now" in text
assert "do not migrate to a separate frontend yet" in text
assert "do not build a professional document editor yet" in text
assert "stay with streamlit for mvp validation" in text
def test_wp43_requires_thin_ui_and_helper_first_architecture():
text = _text().lower()
assert "thin ui patch layer" in text
assert "reusable python helper modules" in text
assert "contract tests before ui integration" in text
assert "helper/model and tests before ui integration" in text
assert "the ui should stay thin" in text
def test_wp43_blocks_unapproved_professional_document_editor_features():
text = _text().lower()
for required in [
"a broad professional document editor",
"click-to-mark sensitive text as an authoritative workflow",
"complex synchronized multi-pane editing",
"word/pdf layout rendering",
"long-document virtualized review",
"export blocking based on ui-only state",
"direct scrub key mutation from new panels",
"replacing the current review table without a separate migration plan",
]:
assert required in text
def test_wp43_sets_frontend_reconsideration_criteria():
text = _text().lower()
assert "when to reconsider a separate frontend" in text
assert "document-centric review needs interaction beyond static/read-only aids" in text
assert "users validate the need" in text
assert "mvp logic is stable enough" in text
assert "profiles, batch review or enterprise deployment" in text
def test_wp43_preserves_privacy_and_local_first_boundaries():
text = _text().lower()
for required in [
"python core remains source of truth",
"api boundary is local-first",
"no cloud document processing",
"no hidden telemetry",
"review/export/scrub key actions stay explicit and auditable",
"no real-data fixtures",
]:
assert required in text
def test_wp43_does_not_close_wp42d_verification_or_change_ui():
text = _text().lower()
assert "wp43 does not validate or close wp42d" in text
assert "wp42d remains pending" in text
for required in [
"does not change:",
"presidio_streamlit.py",
"fix_streamlit_nested_expanders.py",
"any streamlit patch file",
"review table behavior",
"export/download behavior",
"scrub key behavior",
"reinsert behavior",
"helper runtime behavior",
"dependencies",
"docker/runtime behavior",
"cloud processing",
"real-data fixtures",
]:
assert required in text