Olá, queria deixar mais um aviso para quem (assim como eu) tomou NullPointerException na classe ValidacaoTutorComAdocaoEmAndamento quando foi executar a solução apresentada. A classe ValidacaoTutorComAdocaoEmAndamento está diferente na versão apresentada na solução e NÃO vai funcionar.
Classe ValidacaoTutorComAdocaoEmAndamento no projeto inicial extraído do próprio curso
@Component
public class ValidacaoTutorComAdocaoEmAndamento implements ValidacaoSolicitacaoAdocao {
@Autowired
private AdocaoRepository adocaoRepository;
@Autowired
private TutorRepository tutorRepository;
public void validar(SolicitacaoAdocaoDto dto) {
List<Adocao> adocoes = adocaoRepository.findAll();
Tutor tutor = tutorRepository.getReferenceById(dto.idTutor());
for (Adocao a : adocoes) {
if (a.getTutor() == tutor && a.getStatus() == StatusAdocao.AGUARDANDO_AVALIACAO) {
throw new ValidacaoException("Tutor já possui outra adoção aguardando avaliação!");
}
}
}
}
Classe ValidacaoTutorComAdocaoEmAndamento no projeto final extraído do próprio curso
@Component
public class ValidacaoTutorComAdocaoEmAndamento implements ValidacaoSolicitacaoAdocao {
@Autowired
private AdocaoRepository adocaoRepository;
public void validar(SolicitacaoAdocaoDto dto) {
boolean tutorTemAdocaoEmAndamento = adocaoRepository.existsByTutorIdAndStatus(dto.idTutor(), StatusAdocao.AGUARDANDO_AVALIACAO);
if (tutorTemAdocaoEmAndamento) {
throw new ValidacaoException("Tutor já possui outra adoção aguardando avaliação!");
}
}
}
Caso queiram que o teste funcione tem duas soluções:
- Implementar a classe ValidacaoTutorComAdocaoEmAndamento de acordo com o projeto FINAL do curso; ou
- Criar os próprios testes com a versão inicial do projeto, lembrando que estes não terão a mesma solução que foi apresentada nesta aula