Bom dia!
Efetuei as mudanças conforme visto em aula porém me retorna erro no teste, segue códigos:
FinalizarLeilaoServiceTest: package br.com.alura.leilao.service;
import java.math.BigDecimal; import java.util.ArrayList; import java.util.List;
import org.junit.Assert; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations;
import br.com.alura.leilao.dao.LeilaoDao; import br.com.alura.leilao.model.Lance; import br.com.alura.leilao.model.Leilao; import br.com.alura.leilao.model.Usuario;
class FinalizarLeilaoServiceTest {
private FinalizarLeilaoService service;
@Mock
private LeilaoDao leilaoDao;
@Mock
private EnviadorDeEmails enviadorDeEmails;
@BeforeEach
public void beforeEach() {
MockitoAnnotations.initMocks(this);
this.service = new FinalizarLeilaoService(leilaoDao, enviadorDeEmails);
}
@Test
void deveriaFinalizarUmLeilao() {
List<Leilao> leiloes = leiloes();
Mockito.when(leilaoDao.buscarLeiloesExpirados())
.thenReturn(leiloes);
service.finalizarLeiloesExpirados();
Leilao leilao = leiloes.get(0);
Assert.assertTrue(leilao.isFechado());
Assert.assertEquals(new BigDecimal("900"),
leilao.getLanceVencedor().getValor());
Mockito.verify(leilaoDao).salvar(leilao);
}
private List<Leilao> leiloes() {
List<Leilao> lista = new ArrayList<>();
Leilao leilao = new Leilao("Celular",
new BigDecimal("500"),
new Usuario("Fulano"));
Lance primeiro = new Lance(new Usuario("Beltrano"),
new BigDecimal("600"));
Lance segundo = new Lance(new Usuario("Ciclano"),
new BigDecimal("900"));
leilao.propoe(primeiro);
leilao.propoe(segundo);
lista.add(leilao);
return lista;
}
}
FinalizarLeilaoService package br.com.alura.leilao.service;
import java.util.ArrayList; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
import br.com.alura.leilao.dao.LeilaoDao; import br.com.alura.leilao.model.Lance; import br.com.alura.leilao.model.Leilao;
@Service public class FinalizarLeilaoService {
private LeilaoDao leiloes;
private EnviadorDeEmails enviadorDeEmails;
@Autowired
public FinalizarLeilaoService(LeilaoDao leiloes, EnviadorDeEmails enviadorDeEmails) {
this.leiloes = leiloes;
}
public void finalizarLeiloesExpirados() {
List<Leilao> expirados = leiloes.buscarLeiloesExpirados();
expirados.forEach(leilao -> {
Lance maiorLance = maiorLanceDadoNoLeilao(leilao);
leilao.setLanceVencedor(maiorLance);
leilao.fechar();
leiloes.salvar(leilao);
enviadorDeEmails.enviarEmailVencedorLeilao(maiorLance);
});
}
private Lance maiorLanceDadoNoLeilao(Leilao leilao) {
List<Lance> lancesDoLeilao = new ArrayList<>(leilao.getLances());
lancesDoLeilao.sort((lance1, lance2) -> {
return lance2.getValor().compareTo(lance1.getValor());
});
return lancesDoLeilao.get(0);
}
}
Print do erro: