Olá, ao fazer o teste para o código abaixo ele não passa, blz. Minha dúvida é como alterar a consulta pra que funcione corretamente, fiz alguns testes mas nada deu certo.
public double getValorInicialMedioDoUsuario(Usuario usuario) {
return (Double) session.createQuery("select avg(lance.leilao.valorInicial) " +
"from Lance lance " +
"where lance.usuario = :usuario")
.setParameter("usuario", usuario)
.uniqueResult();
}
@Test
public void devolveAMediaDoValorInicialDosLeiloesQueOUsuarioParticipou(){
Usuario dono = new Usuario("Mauricio", "m@a.com");
Usuario comprador = new Usuario("Victor", "v@v.com");
Leilao leilao = new LeilaoBuilder()
.comDono(dono)
.comValor(50.0)
.comLance(Calendar.getInstance(), comprador, 100.0)
.comLance(Calendar.getInstance(), comprador, 200.0)
.constroi();
Leilao leilao2 = new LeilaoBuilder()
.comDono(dono)
.comValor(250.0)
.comLance(Calendar.getInstance(), comprador, 100.0)
.constroi();
usuarioDao.salvar(dono);
usuarioDao.salvar(comprador);
leilaoDao.salvar(leilao);
leilaoDao.salvar(leilao2);
assertEquals(150.0, leilaoDao.getValorInicialMedioDoUsuario(comprador), 0.001);
}