Qual é o problema?
apps/apae/src/app/api/ tem 38 route.ts (o BFF que o front usa pra falar com a API Java) e nenhum tem teste. Duas concentram lógica de decisão própria, não só repasse de chamada:
apps/apae/src/app/api/auth/login/route.ts: tem uma flag DISABLE_AUTH (linha 6) que, se true, pula a chamada à API e loga com um token fixo ('fake-token-dev', linhas 8-19). Hoje está false, mas é um if sem teste que, se alguém trocar sem querer (ou um merge reverter a troca), autentica qualquer usuário sem checar credencial.
apps/apae/src/app/api/documents/[patientId]/route.ts: valida year/category obrigatórios (linhas 31-39), traduz categoria via categoryMap (linhas 5-15, com sinônimo em português e inglês), valida year numérico (linhas 50-57), e trata 404 da API como lista vazia em vez de erro (linhas 78-81).
find apps/apae/src/app/api -iname "*.test.*"
A busca acima não retorna nenhum arquivo de teste para os arquivos listados.
Tarefas Relacionadas
Objetivo da Solução
Testes (Vitest, chamando o handler exportado diretamente com um Request/NextRequest construído no teste) para:
auth/login/route.ts: usuário/senha ausentes (406), sucesso (200, cookie de sessão setado), credencial inválida (401 da API vira 401 com mensagem "Credenciais inválidas"), e erro genérico da API (repassa o status). Confirmar também que, com DISABLE_AUTH no valor atual do arquivo (false), a rota exige credencial. Não é suficiente testar só o ramo de produção, o teste deve travar se alguém trocar a constante sem querer.
documents/[patientId]/route.ts: year ou category ausentes (400), categoria inválida (400), year não numérico (400), sucesso com filtro por type, e 404 da API virando lista vazia (200 com []).
Mockar @/lib/axios (createBaseApi/createDocumentsAPI) e @/lib/cookies (setSessionCookie). Os testes não devem depender da API Java nem do Next rodando.
Critérios de Aceite
Artefatos
Nenhum.
Qual é o problema?
apps/apae/src/app/api/tem 38route.ts(o BFF que o front usa pra falar com a API Java) e nenhum tem teste. Duas concentram lógica de decisão própria, não só repasse de chamada:apps/apae/src/app/api/auth/login/route.ts: tem uma flagDISABLE_AUTH(linha 6) que, setrue, pula a chamada à API e loga com um token fixo ('fake-token-dev', linhas 8-19). Hoje estáfalse, mas é umifsem teste que, se alguém trocar sem querer (ou um merge reverter a troca), autentica qualquer usuário sem checar credencial.apps/apae/src/app/api/documents/[patientId]/route.ts: validayear/categoryobrigatórios (linhas 31-39), traduz categoria viacategoryMap(linhas 5-15, com sinônimo em português e inglês), validayearnumérico (linhas 50-57), e trata 404 da API como lista vazia em vez de erro (linhas 78-81).A busca acima não retorna nenhum arquivo de teste para os arquivos listados.
Tarefas Relacionadas
apae#968 , pré-requisito: sem o Vitest configurado, os testes desta issue não têm como rodarObjetivo da Solução
Testes (Vitest, chamando o handler exportado diretamente com um
Request/NextRequestconstruído no teste) para:auth/login/route.ts: usuário/senha ausentes (406), sucesso (200, cookie de sessão setado), credencial inválida (401 da API vira 401 com mensagem "Credenciais inválidas"), e erro genérico da API (repassa o status). Confirmar também que, comDISABLE_AUTHno valor atual do arquivo (false), a rota exige credencial. Não é suficiente testar só o ramo de produção, o teste deve travar se alguém trocar a constante sem querer.documents/[patientId]/route.ts:yearoucategoryausentes (400), categoria inválida (400),yearnão numérico (400), sucesso com filtro portype, e 404 da API virando lista vazia (200 com[]).Mockar
@/lib/axios(createBaseApi/createDocumentsAPI) e@/lib/cookies(setSessionCookie). Os testes não devem depender da API Java nem do Next rodando.Critérios de Aceite
apps/apae/src/app/api/auth/login/route.test.tsexiste e cobre os cinco cenários listados, incluindo o valor atual deDISABLE_AUTHapps/apae/src/app/api/documents/[patientId]/route.test.tsexiste e cobre os cinco cenários listadospnpm --filter agendamento test -- app/api/auth/login app/api/documentspassaArtefatos
Nenhum.