package br.com.caelum.stella.boleto.bancos; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; 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; public class ItauTest { private Boleto boleto; private Itau banco = new Itau(); private Beneficiario beneficiario; @Before public void setUp() { Datas datas = Datas.novasDatas().comDocumento(20, 03, 2013) .comProcessamento(20, 03, 2013).comVencimento(01, 04, 2013); this.beneficiario = Beneficiario.novoBeneficiario().comNomeBeneficiario("Rodrigo Turini") .comAgencia("167").comCarteira("157").comCodigoBeneficiario("45145") .comNossoNumero("21897666").comDigitoNossoNumero("6"); Pagador pagador = Pagador.novoPagador().comNome("Paulo Silveira"); this.boleto = Boleto.novoBoleto().comDatas(datas).comBeneficiario(beneficiario) .comBanco(banco).comPagador(pagador).comValorBoleto(2680.16) .comNumeroDoDocumento("575"); } @Test public void nossoNumeroFormatadoDeveTerOitoDigitos() { Beneficiario beneficiario = Beneficiario.novoBeneficiario().comNossoNumero("9000206"); String numeroFormatado = this.banco.getNossoNumeroFormatado(beneficiario); assertEquals(8, numeroFormatado.length()); assertEquals("09000206", numeroFormatado); } @Test public void carteiraFormatadoDeveTerTresDigitos() { Beneficiario beneficiario = Beneficiario.novoBeneficiario().comCarteira("1"); String numeroFormatado = this.banco.getCarteiraFormatado(beneficiario); assertEquals(3, numeroFormatado.length()); assertEquals("001", numeroFormatado); } @Test public void contaCorrenteFormatadaDeveTerCincoDigitos() { String numeroFormatado = this.banco.getCodigoBeneficiarioFormatado(this.beneficiario); assertEquals(5, numeroFormatado.length()); assertEquals("45145", numeroFormatado); } @Test public void testLinhaDoBancoItau() { this.boleto = this.boleto.comBanco(this.banco); GeradorDeLinhaDigitavel gerador = new GeradorDeLinhaDigitavel(); String codigoDeBarras = boleto.getBanco().geraCodigoDeBarrasPara(this.boleto); String linha = "34191.57213 89766.660164 74514.590004 6 56550000268016"; assertEquals(linha, gerador.geraLinhaDigitavelPara(codigoDeBarras,this.banco)); } @Test public void testCodigoDeBarraDoBancoItau() { String codigoDeBarras = this.banco.geraCodigoDeBarrasPara(this.boleto); assertEquals("34196565500002680161572189766660167451459000", codigoDeBarras); } @Test public void testLinhaDoBancoItau2() { Datas datas = Datas.novasDatas().comDocumento(20, 03, 2014) .comProcessamento(20, 03, 2014).comVencimento(10, 04, 2014); this.beneficiario = Beneficiario.novoBeneficiario().comNomeBeneficiario("Mario Amaral") .comAgencia("8462").comCarteira("174").comCodigoBeneficiario("05825") .comNossoNumero("00015135").comDigitoNossoNumero("6"); Pagador pagador = Pagador.novoPagador().comNome("Rodrigo de Sousa"); this.boleto = Boleto.novoBoleto().comDatas(datas).comBeneficiario(beneficiario) .comBanco(banco).comPagador(pagador).comValorBoleto(2680.16) .comNumeroDoDocumento("575"); this.boleto = this.boleto.comBanco(this.banco); GeradorDeLinhaDigitavel gerador = new GeradorDeLinhaDigitavel(); String codigoDeBarras = boleto.getBanco().geraCodigoDeBarrasPara(this.boleto); String linha = "34191.74002 01513.568467 20582.590004 6 60290000268016"; assertEquals(linha, gerador.geraLinhaDigitavelPara(codigoDeBarras,this.banco)); } @Test public void testGetImage() { assertNotNull(this.banco.getImage()); } @Test public void naoAparecerNuloEmAgenciaECodigoBeneficiarioFormatado() throws Exception { this.banco = new Itau(); beneficiario.comAgencia("1234").comDigitoAgencia(null).comCodigoBeneficiario("1234567").comDigitoCodigoBeneficiario(null); assertThat(banco.getAgenciaECodigoBeneficiario(beneficiario), is("1234/1234567")); } }