mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 01:28:34 +08:00
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:
co-authored by
Claude Opus 5.5
parent
998616a32a
commit
14b1513328
@@ -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" } }),
|
||||
|
||||
Reference in New Issue
Block a user