Olá pessoal, como estou começando não estou conseguindo ver o erro. Utilizei anotações de validação em umas propriedades de uma classe. Utilizando um JPARepository, a validação ocorre corretamente se eu tento salvar um objeto recém criado. Porém se eu faço uma alteração na propriedade da entidade retornada pelo método save e tento salvar novamente essa validação não ocorre.
//Classe / Entidade
@Entity
public class Categoria {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull @NotBlank @Length(min = 3)
private String nome;
//construtor, getter e setters padrao
}
//Repositorio
public interface CategoriaRepository extends JpaRepository<Categoria, Long>{
public Page<Categoria> findByNomeIgnoreCase(String nome, Pageable paginacao);
}
//Testes
@DataJpaTest
@DisplayName("Teste do repositório de categorias")
class CategoriaRepositoryTest {
@Autowired
private CategoriaRepository categoriaRepository;
//Ok
@Test
void deveGerarUmExcecaoAoSalvarUmaCategoriaSemNome() {
Categoria nova = new Categoria("");
assertThatThrownBy(() -> categoriaRepository.save(nova)).isInstanceOf(ConstraintViolationException.class);
}
//Ok
@Test
void deveGerarUmExcecaoAoSalvarUmaCategoriaOndeAlterouONomeParaNull() {
Categoria nova = new Categoria("teste");
nova.setNome(null);
assertThatThrownBy(() -> categoriaRepository.save(nova)).isInstanceOf(ConstraintViolationException.class);
}
//Dá errado, pois a validação não ocorre na atualização e salva com o nome sendo null
@Test
void deveGerarUmaExcecaoAoAtualizarUmaCategoriaSemNome() {
Categoria nova = new Categoria("Teste");
Categoria salva = categoriaRepository.save(nova);
salva.setNome(null);
assertThatThrownBy(() -> categoriaRepository.save(salva)).isInstanceOf(ConstraintViolationException.class);
}
}
Qual conceito que não entendi ou onde estou vacilando?
Obrigado!