Olá!
Estou tentando identificar um erro que está dando na ValidacaoTutorComLimiteTest mas não consigo. Segue código do Teste e da classe original...
package br.com.alura.adopet.api.validacoes;
import br.com.alura.adopet.api.dto.SolicitacaoAdocaoDto; import br.com.alura.adopet.api.exception.ValidacaoException; import br.com.alura.adopet.api.model.StatusAdocao; import br.com.alura.adopet.api.repository.AdocaoRepository; import br.com.alura.adopet.api.repository.TutorRepository; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension;
import static org.junit.jupiter.api.Assertions.*; import static org.mockito.BDDMockito.given;
@ExtendWith(MockitoExtension.class) class ValidacaoTutorComLimiteDeAdocoesTest {
@InjectMocks
private ValidacaoTutorComLimiteDeAdocoes validador;
@Mock
private AdocaoRepository adocaoRepository;
@Mock
private TutorRepository tutorRepository;
@Mock
private SolicitacaoAdocaoDto dto;
@Test
@DisplayName("Não deveria permitir solicitação para tutor cujo limite de adoções foi atingido.")
void naoDeveriaPermitirSolicitacaoPorLimite() {
//ARRANGE
given(adocaoRepository.countByTutorIdAndStatus(dto.idTutor(), StatusAdocao.APROVADO)).willReturn(5);
//ACT + ASSERT
assertThrows(ValidacaoException.class, () -> validador.validar(dto));
}
}
package br.com.alura.adopet.api.validacoes;
import br.com.alura.adopet.api.dto.SolicitacaoAdocaoDto; import br.com.alura.adopet.api.exception.ValidacaoException; import br.com.alura.adopet.api.model.Adocao; import br.com.alura.adopet.api.model.StatusAdocao; import br.com.alura.adopet.api.model.Tutor; import br.com.alura.adopet.api.repository.AdocaoRepository; import br.com.alura.adopet.api.repository.TutorRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;
import java.util.List;
@Component public class ValidacaoTutorComLimiteDeAdocoes 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) {
int contador = 0;
if (a.getTutor() == tutor && a.getStatus() == StatusAdocao.APROVADO) {
contador = contador + 1;
}
if (contador == 5) {
throw new ValidacaoException("Tutor chegou ao limite máximo de 5 adoções!");
}
}
}
}