public class LeilaoBuilder {
private Usuario dono;
private double valor;
private String nome;
private boolean usado;
private Calendar dataAbertura;
private boolean encerrado;
public LeilaoBuilder() {
this.dono = new Usuario("Joao da Silva", "joao@silva.com.br");
this.valor = 1500.0;
this.nome = "XBox";
this.usado = false;
this.dataAbertura = Calendar.getInstance();
}
public LeilaoBuilder comDono(Usuario dono) {
this.dono = dono;
return this;
}
public LeilaoBuilder comValor(double valor) {
this.valor = valor;
return this;
}
public LeilaoBuilder comNome(String nome) {
this.nome = nome;
return this;
}
public LeilaoBuilder usado() {
this.usado = true;
return this;
}
public LeilaoBuilder encerrado() {
this.encerrado = true;
return this;
}
public LeilaoBuilder diasAtras(int dias) {
Calendar data = Calendar.getInstance();
data.add(Calendar.DAY_OF_MONTH, -dias);
this.dataAbertura = data;
return this;
}
public Leilao constroi() {
Leilao leilao = new Leilao(nome, valor, dono, usado);
leilao.setDataAbertura(dataAbertura);
if(encerrado) leilao.encerra();
return leilao;
}
}
/* e está sendo usado no método abaixo*/
@Test
public void deveRetornarLeiloesDisputados() {
Usuario mauricio = new Usuario("Mauricio", "mauricio@aniche.com.br");
Usuario marcelo = new Usuario("Marcelo", "marcelo@aniche.com.br");
Leilao leilao1 = new LeilaoBuilder()
.comDono(marcelo)
.comValor(3000.0)
.comLance(Calendar.getInstance(), mauricio, 3000.0)
.comLance(Calendar.getInstance(), marcelo, 3100.0)
.constroi();
Leilao leilao2 = new LeilaoBuilder()
.comDono(mauricio)
.comValor(3200.0)
.comLance(Calendar.getInstance(), mauricio, 3000.0)
.comLance(Calendar.getInstance(), marcelo, 3100.0)
.comLance(Calendar.getInstance(), mauricio, 3200.0)
.comLance(Calendar.getInstance(), marcelo, 3300.0)
.comLance(Calendar.getInstance(), mauricio, 3400.0)
.comLance(Calendar.getInstance(), marcelo, 3500.0)
.constroi();
usuarioDao.salvar(marcelo);
usuarioDao.salvar(mauricio);
leilaoDao.salvar(leilao1);
leilaoDao.salvar(leilao2);
List<Leilao> leiloes = leilaoDao.disputadosEntre(2500, 3500);
assertEquals(1, leiloes.size());
assertEquals(3200.0, leiloes.get(0).getValorInicial(), 0.00001);
}