test(inbox): catraca de largura ignora o discador novo do cabeçalho

O #1592 pôs o DialButton no ConversationHeader. O DialButton chama
useVoiceCall, que lança fora do VoiceCallProvider; na aplicação o
provider envolve todo /app, mas tests/unit/inbox-header-nao-trava
renderiza o cabeçalho sem ele e quebrava 4 casos. Este teste só mede
a largura, então o discador sai da conta por vi.mock.

A spec 18 (§5.1 e checklist) dizia que o botão Ligar vivia só no
Customer 360; agora cita também o cabeçalho da conversa na Inbox.

Refs: #1592

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019pUk4A1WWHegBZNbHsqDnp
This commit is contained in:
melgarafael
2026-09-24 18:25:27 -03:00
co-authored by Claude Opus 5.5
parent 998616a32a
commit 14b1513328
2 changed files with 5 additions and 2 deletions
+2 -2
View File
@@ -224,7 +224,7 @@ Em todo `call-ended`: `emit_event()` → linha em `event_log` (consumidores futu
### 5.1 Discador (iniciar chamada)
Botão "Ligar" no header do contato/lead (Customer 360), visível só quando: `organizations.settings.voice_calls.enabled = true` E existe `channel_sessions` com `provider='wacalls'` e status pareado pra essa org. Clique → `POST /api/v1/voice/calls` com o telefone do contato → abre painel de chamada em andamento (§5.3) já em estado `ringing`.
Botão "Ligar" no header do contato/lead (Customer 360) e no cabeçalho da conversa na Inbox (exceto grupos; `components/inbox/ConversationHeader.tsx`, mesmo `DialButton`), visível só quando: `organizations.settings.voice_calls.enabled = true` E existe `channel_sessions` com `provider='wacalls'` e status pareado pra essa org. Clique → `POST /api/v1/voice/calls` com o telefone do contato → abre painel de chamada em andamento (§5.3) já em estado `ringing`.
### 5.2 Chamada recebida
@@ -251,7 +251,7 @@ Design: aplicar `hm-design`/`frontend-design` antes de considerar pronto — nã
## 6. Living System Checklist (doutrina `sistema-vivo.md`)
- **Entrada**: botão Ligar no Customer 360; discador acessível.
- **Entrada**: botão Ligar no Customer 360 e no cabeçalho da conversa na Inbox (exceto grupos); discador acessível.
- **Saída**: `voice_calls` na timeline do lead + `agent_inbox_items` pra chamada perdida.
- **Atividade/log**: `crm_lead_activities` type `voice_call`; `event_log` via `emit_event`.
- **Porta na navegação**: painel de chamada é overlay global, não precisa de item de menu próprio; configuração de pareamento entra em Configurações › Canais (grupo já existente em `lib/navigation/registry.ts`).
@@ -55,6 +55,9 @@ vi.mock("@/hooks/inbox/useReleaseConversation", () => ({
vi.mock("@/hooks/inbox/useResumeAiAttendance", () => ({
useResumeAiAttendance: () => ({ mutate: vi.fn(), isPending: false }),
}));
// O header monta o discador (`DialButton`), que exige o `VoiceCallProvider` do
// shell autenticado. Aqui só a largura importa: o discador fica fora da conta.
vi.mock("@/components/voice/DialButton", () => ({ DialButton: () => null }));
vi.mock("@/hooks/auth/AuthProvider", () => ({
usePermission: () => true,
useAuth: () => ({ user: { id: "u-1" }, activeOrg: { orgId: "org-1", role: "manager" } }),