Você deve implementar todos os testes unitários de service para o projeto DSMovie.
Este é um projeto de filmes e avaliações de filmes. A visualização dos dados dos filmes é pública (não necessita login), porém as alterações de filmes (inserir, atualizar, deletar) são permitidas apenas para usuários ADMIN. As avaliações de filmes podem ser registradas por qualquer usuário logado CLIENT ou ADMIN. A entidade Score armazena uma nota de 0 a 5 (score) que cada usuário deu a cada filme. Sempre que um usuário registra uma nota, o sistema calcula a média das notas de todos usuários, e armazena essa nota média (score) na entidade Movie, juntamente com a contagem de votos (count). Veja vídeo explicativo.
Arquivos de collection e enviroment do Postman estão no projeto.
Abaixo estão os testes unitários que você deverá implementar. Com todos os testes, o Jacoco deve reportar 100% de cobertura, mas o mínimo para aprovação no desafio são 12 dos 15 testes.
● findAllShouldReturnPagedMovieDTO
● findByIdShouldReturnMovieDTOWhenIdExists
● findByIdShouldThrowResourceNotFoundExceptionWhenIdDoesNotExist
● insertShouldReturnMovieDTO
● updateShouldReturnMovieDTOWhenIdExists
● updateShouldThrowResourceNotFoundExceptionWhenIdDoesNotExist
● deleteShouldDoNothingWhenIdExists
● deleteShouldThrowResourceNotFoundExceptionWhenIdDoesNotExist
● deleteShouldThrowDatabaseExceptionWhenDependentId
● saveScoreShouldReturnMovieDTO
● saveScoreShouldThrowResourceNotFoundExceptionWhenNonExistingMovieId
● authenticatedShouldReturnUserEntityWhenUserExists
● authenticatedShouldThrowUsernameNotFoundExceptionWhenUserDoesNotExists
● loadUserByUsernameShouldReturnUserDetailsWhenUserExists
● loadUserByUsernameShouldThrowUsernameNotFoundExceptionWhenUserDoesNotExists
Implementado testes no projeto e utilizando o Jacoco para cobertura de testes: ● JaCoCo é uma ferramenta de código aberto (open-source) usada para mensurar a cobertura de código em aplicações;
● A partir de relatórios visuais é possível identificar as partes do código que estão cobertas e que ainda faltam cobertura;
● O JaCoCo implementa 3 métricas principais para cobertura, sendo:
○ Line Coverage/Statement;
○ Branch Coverage;
Cyclomatic complexity: A partir de uma combinação linear apresenta o números de caminhos que necessitam cobertura.
● O JaCoCo apresenta auxilia o usuário na visualização e análise da cobertura usando diamantes coloridos, conforme a imagem anexada:
-
Diamante vermelho: Indica que nenhum teste está cobrindo o branch;
-
Diamante amarelo: Indica que o código está parcialmente coberto;
-
Diamante verde: Indica que todo o branch foi testado e coberto;