Files
clientflow_backend/tests/test_v46_chatwoot_workflow.py
2026-06-09 22:55:58 +01:00

54 lines
2.3 KiB
Python

from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def read(path: str) -> str:
return (ROOT / path).read_text(encoding="utf-8")
def test_review_manually_and_remove_from_list_are_operational_pending_actions():
task_service = read("app/task_service.py")
action_catalog = read("app/action_catalog.py")
assert "def _initial_task_status" in task_service
assert 'code in {"IGNORE_SPAM", "NO_ACTION"}' in task_service
assert 'code in {"REVIEW_MANUALLY", "REMOVE_FROM_LIST"}' in task_service
assert '"REVIEW_MANUALLY": {\n "route": "rever",\n "action_required": True' in action_catalog
assert '"REMOVE_FROM_LIST": {\n "route": "marketing",\n "action_required": True' in action_catalog
def test_reclassify_review_stays_pending_and_spam_is_skipped():
task_service = read("app/task_service.py")
assert 'new_status = "skipped" if new_action_code in {"IGNORE_SPAM", "NO_ACTION"} else "pending"' in task_service
assert '"REMOVE_FROM_LIST": ("marketing", "Remover contacto da lista")' in task_service
def test_operations_work_items_include_chatwoot_context_and_url():
operations = read("app/operations_service.py")
operations_page = read("app/admin_ui/pages/operations.py")
assert "build_chatwoot_conversation_url" in operations
assert "chatwoot_url" in operations
assert "t.source_system" in operations
assert "t.conversation_id" in operations
assert "Chatwoot ↗" in operations_page
assert "O Chatwoot é a inbox" in operations_page
def test_communications_not_primary_navigation_but_routes_stay_available():
navigation = read("app/admin_ui/navigation.py")
communications = read("app/admin_ui/pages/communications.py")
operations = read("app/admin_ui/pages/operations.py")
assert '("communications", "/communications", "bi-envelope", "Comunicações")' not in navigation
assert '@router.get("/communications"' in communications
assert 'Chatwoot continua a ser a inbox' in communications or 'O Chatwoot é a inbox' in operations
def test_reopen_chatwoot_review_tasks_script_exists():
script = read("scripts/reopen_chatwoot_review_tasks.py")
assert "REVIEW_MANUALLY" in script
assert "REMOVE_FROM_LIST" in script
assert "--dry-run" in script
assert "status = 'pending'" in script