package br.com.caelum.stella.boleto.bancos; import org.junit.Before; import org.junit.Test; import br.com.caelum.stella.boleto.Beneficiario; import br.com.caelum.stella.boleto.Boleto; import br.com.caelum.stella.boleto.Datas; import br.com.caelum.stella.boleto.Pagador; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; public class CaixaTest { private Boleto boleto; private Caixa banco = new Caixa(); private Beneficiario beneficiario; private Boleto outroBoleto; @Before public void setUp() { /////////////////////////////////////////////////////////////////// // SET UP de boleto com carteira SINCO /////////////////////////////////////////////////////////////////// Datas datas = Datas.novasDatas().comDocumento(22, 04, 2013) .comProcessamento(22, 04, 2013).comVencimento(29, 04, 2013); this.beneficiario = Beneficiario.novoBeneficiario().comNomeBeneficiario("Rodrigo Turini") .comAgencia("2873").comCarteira("1") .comCodigoBeneficiario("2359").comNossoNumero("990000000003994458") .comDigitoNossoNumero("0"); Pagador pagador = Pagador.novoPagador().comNome("Mario Amaral"); this.boleto = Boleto.novoBoleto().comDatas(datas) .comBeneficiario(beneficiario).comBanco(this.banco).comPagador(pagador) .comValorBoleto(4016.10).comNumeroDoDocumento("3084373"); /////////////////////////////////////////////////////////////////// // SET UP de boleto com carteira Sem Registro e Registrada no SIGCB /////////////////////////////////////////////////////////////////// Datas datasOutroBoleto = Datas.novasDatas().comDocumento(21, 8, 2012) .comProcessamento(21, 8, 2012).comVencimento(04, 9, 2012); Beneficiario beneficiario = Beneficiario.novoBeneficiario().comNomeBeneficiario("Guilherme") .comAgencia("589").comCarteira("2") .comCodigoBeneficiario("290274").comDigitoCodigoBeneficiario("5") .comNossoNumero("24900000000000132") .comDigitoNossoNumero("3"); Pagador pagadorOutroBoleto = Pagador.novoPagador().comNome("Paulo"); this.outroBoleto = Boleto.novoBoleto().comDatas(datasOutroBoleto) .comBeneficiario(beneficiario).comBanco(banco).comPagador(pagadorOutroBoleto) .comValorBoleto(80.00).comNumeroDoDocumento("00000000132"); } @Test public void carteiraFormatadoDeveTerDoisDigitos() { Beneficiario beneficiario = Beneficiario.novoBeneficiario().comCarteira("1"); String numeroFormatado = this.banco .getCarteiraFormatado(beneficiario); assertEquals(2, numeroFormatado.length()); assertEquals("01", numeroFormatado); } @Test public void contaCorrenteFormatadaDeveTerCincoDigitos() { String numeroFormatado = this.banco .getCodigoBeneficiarioFormatado(this.beneficiario); assertEquals(5, numeroFormatado.length()); assertEquals("02359", numeroFormatado); } @Test public void testLinhaDoBancoCaixaComCarteiraSINCO() { GeradorDeLinhaDigitavel gerador = new GeradorDeLinhaDigitavel(); String codigoDeBarras = boleto.getBanco().geraCodigoDeBarrasPara(this.boleto); String linha = "10491.00231 59990.000008 00039.944582 2 56830000401610"; assertEquals(linha, gerador.geraLinhaDigitavelPara(codigoDeBarras,this.banco)); } @Test public void testCodigoDeBarraDoBancoCaixaComCarteiraSINCO() { assertEquals("10492568300004016101002359990000000003994458", this.banco.geraCodigoDeBarrasPara(this.boleto)); } @Test public void testLinhaDoBancoCaixaComCarteiraSICGB() { GeradorDeLinhaDigitavel gerador = new GeradorDeLinhaDigitavel(); String codigoDeBarras = outroBoleto.getBanco().geraCodigoDeBarrasPara(outroBoleto); String linha = "10492.90271 45900.200044 00000.013227 9 54460000008000"; assertEquals(linha, gerador.geraLinhaDigitavelPara(codigoDeBarras,this.banco)); } @Test public void testCodigoDeBarraDoBancoCaixaComCarteiraSICGB() { assertEquals("10499544600000080002902745900200040000001322", this.banco.geraCodigoDeBarrasPara(this.outroBoleto)); } @Test(expected=IllegalArgumentException.class) public void deveLancarExceptionSeCarteiraNaoForSuportada() throws Exception { this.outroBoleto.getBeneficiario().comCarteira("3"); assertEquals("10499544600000080002902745900200040000001322", this.banco.geraCodigoDeBarrasPara(this.outroBoleto)); } @Test public void testGetImage() { assertNotNull(this.banco.getImage()); } }