package gcom.faturamento;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import gcom.faturamento.AtualizacaoCreditoARealizarHelper.ItemCreditoARealizar;
import gcom.faturamento.credito.CreditoARealizar;
public class TesteAtualizacaoCreditosARealizarPreFaturamento{
FaturamentoUtil controlador = new FaturamentoUtil();
Integer jul2015 = 201507;
Integer jun2015 = 201506;
BigDecimal valorAgua = BigDecimal.ZERO;
BigDecimal valorEsgoto = BigDecimal.ZERO;
BigDecimal valorDebitos = BigDecimal.ZERO;
Collection<CreditoARealizar> creditos = new ArrayList<CreditoARealizar>();
CreditoARealizar credito01 = new CreditoARealizar();
@Before
public void setUp(){
credito01.setValorCredito(new BigDecimal(35));
credito01.setNumeroPrestacaoCredito((short) 6);
credito01.setValorResidualMesAnterior(BigDecimal.ZERO);
credito01.setAnoMesReferenciaPrestacao(jun2015);
creditos.add(credito01);
}
@Test
public void testaParcela4de6PreFaturamento(){
credito01.setNumeroPrestacaoRealizada((short) 4);
AtualizacaoCreditoARealizarHelper helper = controlador.atualizarCreditosARealizar(jul2015, creditos, valorAgua, valorEsgoto, valorDebitos, true);
assertEquals(1, helper.getCreditos().size());
ItemCreditoARealizar item = helper.getCreditos().iterator().next();
CreditoARealizar credito = item.getCreditoARelizar();
assertEquals(5, credito.getNumeroPrestacaoRealizada().intValue());
assertEquals(5.83, item.getCreditoCalculado().doubleValue(), 0);
}
@Test
public void testaTotalContaCreditoPreFaturamento(){
credito01.setNumeroPrestacaoRealizada((short) 5);
AtualizacaoCreditoARealizarHelper helper = controlador.atualizarCreditosARealizar(jul2015, creditos, valorAgua, valorEsgoto, valorDebitos, true);
assertEquals(1, helper.getCreditos().size());
ItemCreditoARealizar item = helper.getCreditos().iterator().next();
CreditoARealizar credito = item.getCreditoARelizar();
assertEquals(6, credito.getNumeroPrestacaoRealizada().intValue());
assertEquals(5.85, item.getCreditoCalculado().doubleValue(), 0);
}
@Test
public void testaPreFaturamentoComParcela0de1(){
credito01.setNumeroPrestacaoCredito((short) 1);
credito01.setNumeroPrestacaoRealizada((short) 0);
AtualizacaoCreditoARealizarHelper helper = controlador.atualizarCreditosARealizar(jul2015, creditos, valorAgua, valorEsgoto, valorDebitos, true);
assertEquals(1, helper.getCreditos().size());
ItemCreditoARealizar item = helper.getCreditos().iterator().next();
CreditoARealizar credito = item.getCreditoARelizar();
assertEquals(1, credito.getNumeroPrestacaoRealizada().intValue());
assertEquals(35, item.getCreditoCalculado().doubleValue(), 0);
assertFalse(credito.possuiResiduo());
}
@Test
public void testaPreFaturamentoComParcela0de1EResiduo(){
credito01.setNumeroPrestacaoCredito((short) 1);
credito01.setNumeroPrestacaoRealizada((short) 1);
credito01.setValorResidualMesAnterior(new BigDecimal(8.40));
AtualizacaoCreditoARealizarHelper helper = controlador.atualizarCreditosARealizar(jul2015, creditos, valorAgua, valorEsgoto, valorDebitos, true);
assertEquals(1, helper.getCreditos().size());
ItemCreditoARealizar item = helper.getCreditos().iterator().next();
CreditoARealizar credito = item.getCreditoARelizar();
assertEquals(1, credito.getNumeroPrestacaoRealizada().intValue());
assertEquals(8.40, item.getCreditoCalculado().doubleValue(), 0);
assertTrue(credito.possuiResiduo());
assertEquals(8.40, credito.getValorResidualMesAnterior().doubleValue(), 0);
}
@Test
public void testaTotalContaCreditoFaturamento(){
credito01.setNumeroPrestacaoRealizada((short) 6);
credito01.setAnoMesReferenciaPrestacao(jul2015);
valorAgua = new BigDecimal(14);
AtualizacaoCreditoARealizarHelper helper = controlador.atualizarCreditosARealizar(jul2015, creditos, valorAgua, valorEsgoto, valorDebitos, false);
assertEquals(1, helper.getCreditos().size());
ItemCreditoARealizar item = helper.getCreditos().iterator().next();
CreditoARealizar credito = item.getCreditoARelizar();
assertEquals(6, credito.getNumeroPrestacaoRealizada().intValue());
assertEquals(5.85, item.getCreditoCalculado().doubleValue(), 0);
}
@Test
public void testaParcela5de6Faturamento(){
credito01.setNumeroPrestacaoRealizada((short) 5);
credito01.setAnoMesReferenciaPrestacao(jul2015);
valorAgua = new BigDecimal(14);
AtualizacaoCreditoARealizarHelper helper = controlador.atualizarCreditosARealizar(jul2015, creditos, valorAgua, valorEsgoto, valorDebitos, false);
assertEquals(1, helper.getCreditos().size());
ItemCreditoARealizar item = helper.getCreditos().iterator().next();
CreditoARealizar credito = item.getCreditoARelizar();
assertEquals(5, credito.getNumeroPrestacaoRealizada().intValue());
assertEquals(5.83, item.getCreditoCalculado().doubleValue(), 0);
}
@Test
public void testaParcela4de6Faturamento(){
credito01.setNumeroPrestacaoRealizada((short) 4);
credito01.setAnoMesReferenciaPrestacao(jul2015);
valorAgua = new BigDecimal(14);
AtualizacaoCreditoARealizarHelper helper = controlador.atualizarCreditosARealizar(jul2015, creditos, valorAgua, valorEsgoto, valorDebitos, false);
assertEquals(1, helper.getCreditos().size());
ItemCreditoARealizar item = helper.getCreditos().iterator().next();
CreditoARealizar credito = item.getCreditoARelizar();
assertEquals(4, credito.getNumeroPrestacaoRealizada().intValue());
assertEquals(5.83, item.getCreditoCalculado().doubleValue(), 0);
}
@Test
public void testaParcela1de1NuncaConcedido(){
credito01.setNumeroPrestacaoCredito((short) 1);
credito01.setNumeroPrestacaoRealizada((short) 1);
credito01.setAnoMesReferenciaPrestacao(jul2015);
valorAgua = new BigDecimal(45);
AtualizacaoCreditoARealizarHelper helper = controlador.atualizarCreditosARealizar(jul2015, creditos, valorAgua, valorEsgoto, valorDebitos, false);
assertEquals(1, helper.getCreditos().size());
ItemCreditoARealizar item = helper.getCreditos().iterator().next();
CreditoARealizar credito = item.getCreditoARelizar();
assertEquals(1, credito.getNumeroPrestacaoRealizada().intValue());
assertEquals(35, item.getCreditoCalculado().doubleValue(), 0);
assertFalse(credito.possuiResiduo());
}
@Test
public void testaParcela1de1ConcedidoComResiduo(){
credito01.setNumeroPrestacaoCredito((short) 1);
credito01.setNumeroPrestacaoRealizada((short) 1);
credito01.setAnoMesReferenciaPrestacao(jul2015);
credito01.setValorResidualMesAnterior(new BigDecimal(21));
valorAgua = new BigDecimal(14.70);
AtualizacaoCreditoARealizarHelper helper = controlador.atualizarCreditosARealizar(jul2015, creditos, valorAgua, valorEsgoto, valorDebitos, false);
assertEquals(1, helper.getCreditos().size());
ItemCreditoARealizar item = helper.getCreditos().iterator().next();
CreditoARealizar credito = item.getCreditoARelizar();
assertEquals(1, credito.getNumeroPrestacaoRealizada().intValue());
assertEquals(14.70, item.getCreditoCalculado().doubleValue(), 0);
assertTrue(credito.possuiResiduo());
assertEquals(6.30, credito.getValorResidualMesAnterior().doubleValue(), 0.01);
}
}