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());
}