Skip to content

Criar testes unitários para o UserController #70

@liviacanuto

Description

@liviacanuto

Objetivo:

Garantir o correto funcionamento dos métodos register e login do UserController, validando todas as condições esperadas de sucesso e erro.


Descrição da Atividade

Desenvolver testes unitários e de integração para o arquivo UserController.ts, cobrindo os principais fluxos e cenários possíveis.

As dependências devem ser mockadas para garantir isolamento dos testes e evitar chamadas reais ao banco de dados ou geração de tokens.


Cenários de Teste a Implementar

Método register

  1. Cadastro bem-sucedido
    • Deve retornar 201 e um objeto JSON contendo o token JWT.
  2. Parâmetros ausentes
    • Quando name, email ou password não forem enviados, deve retornar 400 com a mensagem "Parâmetros inválidos".
  3. Usuário já existente
    • Quando userDataSource.getByEmail retornar um usuário existente, deve retornar 409 com "Usuário já existe".
  4. Erro ao criar usuário
    • Quando userDataSource.create retornar false, deve retornar 500 com "Falha ao cadastrar usuário".
  5. Erro interno inesperado
    • Simular uma exceção e verificar se retorna 500 com "Falha ao cadastrar usuário".

Método login

  1. Login bem-sucedido
    • Deve retornar 201 e um objeto JSON contendo o token JWT.
  2. Parâmetros ausentes
    • Quando email ou password não forem enviados, deve retornar 400 com "Não foram enviados todos os parâmetros obrigatórios".
  3. Usuário inexistente ou senha incorreta
    • Deve retornar 400 com "Parâmetros inválidos" quando o usuário não for encontrado ou a senha for inválida.
  4. Erro interno inesperado
    • Simular uma exceção e verificar se retorna 500 com "Falha ao efetuar o login do usuário".

Critérios de Aceitação

  • Cobertura mínima de 80% nas funções do UserController.
  • Todos os mocks devem ser bem isolados e restaurados após cada teste.
  • O código dos testes deve seguir boas práticas de legibilidade e organização.

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