1
resposta

Solução com a Classe LeilaoBuilder disponibilizada sem o metodo ComLance()

Existe uma redundância no código. No método construtor da classe Lance não é necessário o quarto parâmetro Leilao, pois na classe LeilaoBuilder, temos o método AdicionaLance(Lance) que gera o relacionamento entre Leilao e Lance.

Pode-se verificar esse duplo relacionamento aqui:

Leilao novo1 = new LeilaoBuilder().comDono(mauricio).comNome("XBOX").comValor(1500.0).encerrado().constroi();
Lance lance1 = new Lance(Calendar.getInstance(), jose, 2000.0, novo1);
novo1.adicionaLance(lance1);

Segue o meu caso de testes abaixo:

@Test
    public void deveTrazerLeiloesNaoEncerradosCom3LancesDentroDeUmIntervaloDeValor() {
        Usuario mauricio = new Usuario("Mauricio", "mauricio@email.com");
        usuarioDao.salvar(mauricio);
        Usuario jose = new Usuario("Jose", "jose@email.com");
        usuarioDao.salvar(jose);
        Usuario maria = new Usuario("Maria", "maria@email.com");
        usuarioDao.salvar(maria);
        Usuario pedro = new Usuario("Pedro", "pedro@email.com");
        usuarioDao.salvar(pedro);
        Usuario paulo = new Usuario("Paulo", "paulo@email.com");
        usuarioDao.salvar(paulo);

        Leilao novo1 = new LeilaoBuilder().comDono(mauricio).comNome("XBOX").comValor(1500.0).encerrado().constroi();
        Lance lance1 = new Lance(Calendar.getInstance(), jose, 2000.0, novo1);
        novo1.adicionaLance(lance1);
        Lance lance2 = new Lance(Calendar.getInstance(), maria, 2100.0, novo1);
        novo1.adicionaLance(lance2);
        Lance lance3 = new Lance(Calendar.getInstance(), jose, 2200.0, novo1);
        novo1.adicionaLance(lance3);
        Lance lance4 = new Lance(Calendar.getInstance(), maria, 2300.0, novo1);
        novo1.adicionaLance(lance4);
        leilaoDao.salvar(novo1);

        Leilao novo2 = new LeilaoBuilder().comDono(mauricio).comNome("Televisao").comValor(2050.0).constroi();
        lance1 = new Lance(Calendar.getInstance(), jose, 2100.0, novo2);
        novo2.adicionaLance(lance1);
        lance2 = new Lance(Calendar.getInstance(), paulo, 2200.0, novo2);
        novo2.adicionaLance(lance2);
        lance3 = new Lance(Calendar.getInstance(), pedro, 2300.0, novo2);
        novo2.adicionaLance(lance3);
        lance4 = new Lance(Calendar.getInstance(), maria, 2400.0, novo2);
        novo2.adicionaLance(lance4);
        leilaoDao.salvar(novo2);

        Leilao novo3 = new LeilaoBuilder().comDono(mauricio).comNome("Geladeira").comValor(1500.0).constroi();
        lance1 = new Lance(Calendar.getInstance(), jose, 2000.0, novo3);
        novo3.adicionaLance(lance1);
        lance2 = new Lance(Calendar.getInstance(), maria, 2100.0, novo3);
        novo3.adicionaLance(lance2);
        lance3 = new Lance(Calendar.getInstance(), pedro, 2200.0, novo3);
        novo3.adicionaLance(lance3);
        lance4 = new Lance(Calendar.getInstance(), paulo, 2300.0, novo3);
        novo3.adicionaLance(lance4);
        leilaoDao.salvar(novo3);

        Leilao novo4 = new LeilaoBuilder().comDono(mauricio).comNome("Sofá").comValor(2500.0).constroi();
        lance1 = new Lance(Calendar.getInstance(), paulo, 2600.0, novo4);
        novo4.adicionaLance(lance1);
        lance2 = new Lance(Calendar.getInstance(), pedro, 2700.0, novo4);
        novo4.adicionaLance(lance2);
        lance3 = new Lance(Calendar.getInstance(), maria, 2800.0, novo4);
        novo4.adicionaLance(lance3);
        lance4 = new Lance(Calendar.getInstance(), paulo, 2900.0, novo4);
        novo4.adicionaLance(lance4);
        leilaoDao.salvar(novo4);

        List<Leilao> leiloes = leilaoDao.disputadosEntre(2000.0, 3000.0);

        assertEquals(2, leiloes.size());
    }
1 resposta

Oi Rodrigo,

Realmente está faltando esse pedaço na solução, vou verificar com o pessoal.