Documentação dos Testes e Mocks - Felipe-builder/rest-conexa-challenger GitHub Wiki

Documentação de Testes

Esta documentação descreve os testes realizados nos repositórios da aplicação, utilizando a biblioteca com.github.javafaker para criação de mocks de dados.

1. UserRepositoryTest

1.1. Dados de Mock Utilizados

  • MockUser: Classe responsável por gerar objetos User e UserDTO para os testes.

1.2. Testes Realizados

  • Salvar Usuário:

    • Método Testado: testGivenUserObject_whenSave_thenReturnSavedUser

    • Descrição: Verifica se é possível salvar um usuário no banco de dados.

    • Asserts Realizados:

      • createdUser não é nulo.
      • createdUser.getId() não é nulo.
  • Buscar Todos Usuários:

    • Método Testado: testGivenUserList_whenFindAll_thenReturnUserList
    • Descrição: Verifica se é possível recuperar uma lista de usuários do banco de dados.
    • Asserts Realizados:
      • userList não é nulo.
      • userList não está vazio.
  • Buscar Usuário por ID:

    • Método Testado: testGivenUserObject_whenFindByID_thenReturnUserObject
    • Descrição: Verifica se é possível recuperar um usuário por seu ID no banco de dados.
    • Asserts Realizados:
      • userFound não é nulo.
      • userFound.getId() é igual ao ID do usuário criado.
  • Buscar Usuário por E-mail:

    • Método Testado: testGivenUserObject_whenFindByEmail_thenReturnUserObject
    • Descrição: Verifica se é possível recuperar um usuário por seu e-mail no banco de dados.
    • Asserts Realizados:
      • userFound não é nulo.
      • userFound.getId() é igual ao ID do usuário criado.
  • Buscar Usuário por CPF:

    • Método Testado: testGivenUserObject_whenFindByCpf_thenReturnUserObject
    • Descrição: Verifica se é possível recuperar um usuário por seu CPF no banco de dados.
    • Asserts Realizados:
      • userFound não é nulo.
      • userFound.getId() é igual ao ID do usuário criado.
  • Atualizar Usuário:

    • Método Testado: testGivenUserObject_whenUpdateUserReturnUpdateUserObject
    • Descrição: Verifica se é possível atualizar um usuário no banco de dados.
    • Asserts Realizados:
      • updatedUser não é nulo.
      • updatedUser.getFullName() é igual ao novo nome definido.
  • Excluir Usuário:

    • Método Testado: testGivenUserObject_whenDelete_thenRemoveUser
    • Descrição: Verifica se é possível excluir um usuário do banco de dados.
    • Asserts Realizados:
      • Após a exclusão, a busca por ID resulta em um Optional vazio.
  • Buscar Usuário por Nome e Especialidade:

    • Método Testado: testGivenFullNameAndSpecialt_whenFindByFullNameAndSpecialty_thenReturnUserObject
    • Descrição: Verifica se é possível recuperar um usuário por nome e especialidade no banco de dados.
    • Asserts Realizados:
      • userFound não é nulo.
      • userFound.getFullName() é igual ao nome do usuário criado.

2. UserServiceTest

2.1. Dados de Mock Utilizados

  • MockUser: Classe responsável por gerar objetos User e UserDTO para os testes.

2.2. Testes Realizados

  • Salvar Usuário com E-mail Existente:

    • Método Testado: testGivenExistingEmail_whenSaveUser_thenThrowsException
    • Descrição: Verifica se o serviço lança uma exceção ao tentar salvar um usuário com e-mail existente.
    • Asserts Realizados:
      • Exceção BadRequestException é lançada com a mensagem esperada.
  • Buscar Todos Usuários:

    • Método Testado: testGivenUsersList_whenFindAllUsers_thenReturnUsersList
    • Descrição: Verifica se o serviço retorna uma lista válida de usuários.
    • Asserts Realizados:
      • usersDtoList não é nulo.
      • O tamanho de usersDtoList é igual ao número de usuários criados.
  • Buscar Todos Usuários quando a Lista Está Vazia:

    • Método Testado: testGivenEmptyUsersList_whenFindAllUsers_thenReturnEmptyUsersList
    • Descrição: Verifica se o serviço retorna uma lista vazia quando não há usuários no banco de dados.
    • Asserts Realizados:
      • usersDtoList é uma lista vazia.
  • Buscar Usuário por ID:

    • Método Testado: testGivenUsersId_whenFindById_thenReturnUserObject
    • Descrição: Verifica se o serviço retorna um usuário válido por ID.
    • Asserts Realizados:
      • userFound não é nulo.
      • userFound.getKey() é igual ao ID do usuário criado.
  • Atualizar Usuário:

    • Método Testado: testGivenUserObject_whenUpdateUser_thenReturnUpdateUserObject
    • Descrição: Verifica se o serviço atualiza corretamente um usuário.
    • Asserts Realizados:
      • userUpdated não é nulo.
      • userUpdated.getFullName() é igual ao novo nome definido.
  • Excluir Usuário:

    • Método Testado: testGivenUserID_whenDeleteUser_thenDoNothing
    • Descrição: Verifica se o serviço exclui corretamente um usuário.
    • Asserts Realizados:
      • O método delete do repositório é chamado uma vez.

3. Mocks

3.1. MockUser

O MockUser é uma classe utilizada para criar objetos de usuário mockados para testes.

  • Métodos Principais:
    • mockEntity(): Retorna um usuário mockado.
    • mockDTO(): Retorna um DTO de usuário mockado.
    • mockEntityList(): Retorna uma lista de usuários mockados.
    • mockDTOList(): Retorna uma lista de DTOs de usuários mockados.
    • mockRandomEntityList(quantityUsers, withId): Retorna uma lista de usuários mockados com dados aleatórios.