Objetivo:
Aumentar a cobertura de testes do RouteSearchesController, garantindo que todos os cenários de sucesso e erro dos métodos get, getRanking e validateSearchParams sejam devidamente validados.
Descrição da Atividade
Desenvolver novos testes unitários para o arquivo RouteSearchesController.ts, complementando os testes existentes que já cobrem parte do método get.
Os testes devem utilizar Jest e Supertest, com mocks para o PostgresRouteSearchDataSource, de forma a isolar a lógica do controller e evitar chamadas reais ao banco de dados.
Cenários de Teste a Implementar
1. Método get — Erro interno inesperado
- Quando o método
routeSearchDataSource.get() lançar uma exceção genérica.
- Esperado:
- Retornar status
500;
- Corpo da resposta:
{ message: 'Um erro inesperado aconteceu ao encontrar as buscas realizadas' }.
2. Método getRanking — Sucesso
- Quando o método
routeSearchDataSource.getRanking() retornar uma lista de resultados válida.
- Esperado:
- Retornar status
200;
- Chamar
getRanking() exatamente uma vez;
- Retornar o corpo
{ data: [...] }.
3. Método getRanking — Parâmetro inválido
- Quando a query não tiver
startDate nem endDate.
- Esperado:
- Retornar status
400;
- Não chamar
getRanking();
- Corpo:
{ message: 'Informe pelo menos um período: startDate,endDate' }.
4. Método getRanking — Erro interno inesperado
- Quando
getRanking() lançar uma exceção genérica.
- Esperado:
- Retornar status
500;
- Corpo:
{ message: 'Um erro inesperado aconteceu ao obter o ranking das linhas' }.
5. Método validateSearchParams — Parâmetros válidos
- Quando o objeto contiver pelo menos um dos parâmetros (
startDate ou endDate).
- Esperado:
6. Método validateSearchParams — Parâmetros inválidos
- Quando o objeto não contiver nenhum dos parâmetros (
startDate e endDate ausentes ou vazios).
- Esperado:
- Lançar
InvalidParamError com mensagem "Informe pelo menos um período: startDate,endDate".
Critérios de Aceitação
- Todos os métodos (
get, getRanking, validateSearchParams) devem possuir ao menos um teste de sucesso e um de erro.
Objetivo:
Aumentar a cobertura de testes do
RouteSearchesController, garantindo que todos os cenários de sucesso e erro dos métodosget,getRankingevalidateSearchParamssejam devidamente validados.Descrição da Atividade
Desenvolver novos testes unitários para o arquivo
RouteSearchesController.ts, complementando os testes existentes que já cobrem parte do métodoget.Os testes devem utilizar Jest e Supertest, com mocks para o
PostgresRouteSearchDataSource, de forma a isolar a lógica do controller e evitar chamadas reais ao banco de dados.Cenários de Teste a Implementar
1. Método
get— Erro interno inesperadorouteSearchDataSource.get()lançar uma exceção genérica.500;{ message: 'Um erro inesperado aconteceu ao encontrar as buscas realizadas' }.2. Método
getRanking— SucessorouteSearchDataSource.getRanking()retornar uma lista de resultados válida.200;getRanking()exatamente uma vez;{ data: [...] }.3. Método
getRanking— Parâmetro inválidostartDatenemendDate.400;getRanking();{ message: 'Informe pelo menos um período: startDate,endDate' }.4. Método
getRanking— Erro interno inesperadogetRanking()lançar uma exceção genérica.500;{ message: 'Um erro inesperado aconteceu ao obter o ranking das linhas' }.5. Método
validateSearchParams— Parâmetros válidosstartDateouendDate).6. Método
validateSearchParams— Parâmetros inválidosstartDateeendDateausentes ou vazios).InvalidParamErrorcom mensagem"Informe pelo menos um período: startDate,endDate".Critérios de Aceitação
get,getRanking,validateSearchParams) devem possuir ao menos um teste de sucesso e um de erro.