Status: Approved · v2 · SPEC-MOCKS-CONTRACTS-001
depends_on: SPEC-CONTRACTS-RESPONSE-001
used_by: IS-ZERO-00.2, IS-ZERO-00.5
Contratos de mocks e fixtures
Especificação detalhada do simulador de API usado antes e durante a integração real.
Arquitetura
Objetivo
@raizfc/mocks simula a API, não a tela. Ele implementa HttpClient, roteia requests para handlers e opera sobre um estado em memória inicializado por cenários tipados.
packages/mocks/src/
index.ts
client/
mock-client.ts
mock-router.ts
mock-state.ts
mock-delay.ts
mock-errors.ts
data/<domain>/
handlers/<domain>.handlers.ts
scenarios/
default-scenario.ts
empty-scenario.ts
error-scenario.ts
rich-scenario.ts
Fluxo obrigatório
Screen → Hook → Service → HttpClient → MockClient → Handler → State/Fixture
Fixtures
Fixtures são TypeScript tipadas, imutáveis e determinísticas. IDs seguem team_001, user_001, match_001; datas usam um clock de cenário. Mutações nunca alteram a fixture fonte: o cenário clona os dados para MockState.
Cenários
default: volume realista para desenvolvimento.empty: relações vazias sem apagar entidades essenciais.error: falhas selecionáveis e permissions reduzidas.rich: demonstração ampla, com conteúdos, partidas, rankings e gestão.
Estados adicionais como slow/offline são opções do client, não cópias completas de fixtures.
Mutabilidade
O MVP deve implementar stateful behavior para follow/cheer, mutes/hides, notifications, invites, links, match/report/result, wallet/payment fake e create/update essenciais. Persistência entre reloads não é requisito inicial.
Privacidade
Handlers públicos constroem DTOs públicos; não reutilizam objetos management e depois “removem alguns campos”. O teste deve falhar se chaves proibidas forem encontradas.
Latência e falhas
- Delay default configurável por cenário.
- Timeout/offline são falhas de client.
- Erros de domínio são retornados pelo handler com envelope.
- Testes usam delay zero.
Reset e debug
resetScenario()restaura seed.setScenario(name)troca todo o estado.setRouteError(route, code)força caso específico.- Não expor ferramentas de debug em production build.
Critérios de aceite
- Fixtures tipadas e determinísticas.
- Handlers cobrem todos os endpoints P0/P1 do MVP.
- Mutations alteram state.
- Public/private boundaries testadas.
- Services não sabem se client é mock ou real.