@Transactional(propagation = Propagation.SUPPORTS)
public void delete(Long id) {
if (!repository.existsById(id)) {
throw new ResourceNotFoundException("Recurso não encontrado");
}
try {
repository.deleteById(id);
}
catch (DataIntegrityViolationException e) {
throw new DatabaseException("Falha de integridade referencial");
}
}
O delete tem o cenário que ele vai deletar com ID existente.
Mas também tem as duas exceções (com id não existente e com id com produto dependente, ou seja, linkado em algum pedido).
Mock
A primeira coisa é fazer os cenários do existsById e depois do deleteById.