39 lines
1.6 KiB
Python
39 lines
1.6 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_operations_is_single_work_queue_not_mini_dashboard():
|
|
operations = read("app/admin_ui/pages/operations.py")
|
|
assert "Lista única de trabalho do operador" in operations
|
|
assert "o que tenho de fazer agora?" in operations
|
|
assert "Não é um mini-dashboard técnico" in operations
|
|
assert "Outbox que precisa de atenção" not in operations
|
|
assert "Documentos que podem exigir ação" not in operations
|
|
assert "Produtos sem Artigo Jasmin" not in operations
|
|
assert "Clientes incompletos" not in operations
|
|
|
|
|
|
def test_operations_has_operator_filters_and_primary_buttons():
|
|
operations = read("app/admin_ui/pages/operations.py")
|
|
for label in ["Todas", "Vendas", "Financeiro", "Logística", "Revisão", "Bloqueadas", "Concluídas hoje"]:
|
|
assert label in operations
|
|
for label in ["Preparar orçamento", "Preparar pró-forma", "Confirmar pagamento", "Rever mensagem", "Associar cliente"]:
|
|
assert label in operations
|
|
assert "Abrir Chatwoot ↗" in operations
|
|
assert "Ver oportunidade" in operations
|
|
|
|
|
|
def test_operations_service_returns_compact_queue_counters_and_action_codes():
|
|
ops = read("app/operations_service.py")
|
|
assert "work_queue_total" in ops
|
|
assert "overdue_tasks" in ops
|
|
assert "review_tasks" in ops
|
|
assert "blocked_outbox" in ops
|
|
assert "t.action_code" in ops and "AS action_code" in ops
|
|
assert "upper(io.target_system || '_' || io.action_type) AS action_code" in ops
|