Skip to content

Criar os testes unitários restantes para o busController #72

@liviacanuto

Description

@liviacanuto

Objetivo:

Completar a cobertura de testes unitários e de integração do busController, garantindo que todos os fluxos e cenários relevantes do método getRoutes (e métodos auxiliares) sejam devidamente validados.


Descrição da Atividade

Desenvolver testes automatizados adicionais para o controller busController, com foco em cobrir os fluxos válidos e de erro que ainda não foram contemplados.

As dependências externas (use cases e data sources) devem ser mockadas, permitindo simular respostas esperadas e falhas controladas sem necessidade de conexões reais com banco de dados ou APIs externas.


Cenários de Teste a Implementar

Erro — cidades ausentes

  • Quando originCityId ou destinationCityId não forem enviados no corpo da requisição.

    Esperado:

    • Retornar 400 com { erro: "Cidade de origem ou destino inválidos" }.

Erro — IDs de cidade fora do intervalo permitido

  • Quando originCityId ou destinationCityId forem menores que 1 ou maiores que 134.

    Esperado:

    • Retornar 400 com { erro: "Cidade de origem ou destino inválidos" }.

Erro — CID inválido

  • Quando cid for:
    • Um array vazio;

    • Um número menor ou igual a 0;

    • Não enviado no corpo.

      Esperado:

    • Retornar 400 com { erro: "CID inválido" }.


Erro — cidades inexistentes no banco

  • Quando getCityByIdUseCase.execute() retornar null para uma das cidades.

    Esperado:

    • Retornar 400 com { erro: "Rota não encontrada para as cidades informadas" }.

Sucesso — rota encontrada

  • Quando todos os parâmetros forem válidos e os use cases retornarem dados simulados.

    Esperado:

    • Retornar 200 com objeto contendo:
      • {verificar dentro do código}

Erro interno — exceção inesperada

  • Quando qualquer use case lançar um erro não tratado.

    Esperado:

    • Retornar 500 com { erro: "Ocorreu um erro ao obter a linha informada" }.

Testar comportamento de saveRouteSearch

  • Garantir que o método chama corretamente routeSearchDataSource.create para cada rota e CID.

    Sugestão: Testar isoladamente com mocks do routeSearchDataSource e verificar se a função é chamada o número esperado de vezes.


Testar getPrimaryCid

  • Quando cid for um número → deve retornar o próprio valor.
  • Quando cid for um array → deve chamar getPrimaryAdaption.execute e retornar o resultado mockado.
  • Quando ocorrer erro em getPrimaryAdaption → deve retornar o primeiro valor do array.

Testar checkRoutesAccessibility

  • Mockar verifyAccessibilityUseCase.execute e garantir que é chamado para cada linha.

    Esperado: cada line deve receber um campo vehicle definido pelo mock.


Critérios de Aceitação

  • Mocks configurados corretamente para simular os use cases e datasources.
  • Todos os mocks devem ser limpos após cada teste.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

Projects

Status

🏗 In progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions