Skip to content

Criar os testes unitários restantes para o RouteSearchesController #73

@liviacanuto

Description

@liviacanuto

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:
    • Não lançar exceção.

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.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

Projects

Status

👀 In review

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions