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 BancoDoBrasilTest { private Boleto boleto; private BancoDoBrasil banco; private Beneficiario beneficiario; @Before public void setUp() { Datas datas = Datas.novasDatas().comDocumento(4, 5, 2008).comProcessamento(4, 5, 2008) .comVencimento(2, 5, 2008); this.beneficiario = Beneficiario.novoBeneficiario().comNomeBeneficiario("Caue") .comAgencia("1824").comDigitoAgencia("4") .comCodigoBeneficiario("76000") .comNumeroConvenio("1207113") .comDigitoCodigoBeneficiario("5") .comCarteira("18") .comNossoNumero("9000206"); Pagador pagador = Pagador.novoPagador().comNome("Fulano"); this.banco = new BancoDoBrasil(); this.boleto = Boleto.novoBoleto().comDatas(datas).comBeneficiario(this.beneficiario).comPagador(pagador) .comValorBoleto("40.00").comNumeroDoDocumento("4323"); } @Test public void numeroDoConvenioFormatadoDeveTerSeisDigitos() { Beneficiario beneficiario = Beneficiario.novoBeneficiario().comNumeroConvenio("1234"); String numeroFormatado = this.banco.getNumeroConvenioFormatado(beneficiario); assertEquals(6, numeroFormatado.length()); assertEquals("001234", numeroFormatado); } @Test public void nossoNumeroFormatadoDeveTerOnzeDigitos() { Beneficiario beneficiario = Beneficiario.novoBeneficiario().comNossoNumero("9000206").comCarteira("11"); String numeroFormatado = this.banco.getNossoNumeroFormatado(beneficiario); assertEquals(11, numeroFormatado.length()); assertEquals("00009000206", numeroFormatado); } @Test public void nossoNumeroFormatadoDeveTerDezesseteDigitosComCarteira18() { Beneficiario beneficiario = Beneficiario.novoBeneficiario().comNossoNumero("9000206").comCarteira("18"); String numeroFormatado = this.banco.getNossoNumeroFormatado(beneficiario); assertEquals(17, numeroFormatado.length()); assertEquals("00000000009000206", numeroFormatado); } @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 contaCorrenteFormatadaDeveTerOitoDigitos() { String numeroFormatado = this.banco.getCodigoBeneficiarioFormatado(this.beneficiario); assertEquals(8, numeroFormatado.length()); assertEquals("00076000", numeroFormatado); } @Test public void testNumeroFormatadoNoCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("001", this.banco.geraCodigoDeBarrasPara(this.boleto).substring(0, 3)); } @Test public void testCodEspecieMoedaNoCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("9", this.banco.geraCodigoDeBarrasPara(this.boleto).substring(3, 4)); } @Test public void testDigitoVerificadorNoCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("5", this.banco.geraCodigoDeBarrasPara(this.boleto).substring(4, 5)); } @Test public void testFatorVencimentoNoCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("3860", this.banco.geraCodigoDeBarrasPara(this.boleto).substring(5, 9)); } @Test public void testValorNominalNoCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("0000004000", this.banco.geraCodigoDeBarrasPara(this.boleto).substring(9, 19)); } @Test public void testCampoLivreNoCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("0000001207113000900020618", this.banco.geraCodigoDeBarrasPara(this.boleto).substring(19, 44)); } @Test public void testZerosNoCampoLivreNoCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("000000", this.banco.geraCodigoDeBarrasPara(this.boleto).substring(19, 25)); } @Test public void testNumConvenioFormatadoNoCampoLivreNoCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("1207113", this.banco.geraCodigoDeBarrasPara(this.boleto).substring(25, 32)); } @Test public void testNossoNumeroFormatadoNoCampoLivreNoCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("0009000206", this.banco.geraCodigoDeBarrasPara(this.boleto).substring(32, 42)); } @Test public void testCarteiraNoCampoLivreNoCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("18", this.banco.geraCodigoDeBarrasPara(this.boleto).substring(42, 44)); } @Test public void testCodigoDeBarraDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); assertEquals("00195386000000040000000001207113000900020618", this.banco.geraCodigoDeBarrasPara(this.boleto)); } @Test public void testLinhaDoBancoDoBrasil() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); GeradorDeLinhaDigitavel linhaDigitavelGenerator = new GeradorDeLinhaDigitavel(); String codigoDeBarras = boleto.getBanco().geraCodigoDeBarrasPara(this.boleto); assertEquals("00190.00009 01207.113000 09000.206186 5 38600000004000", linhaDigitavelGenerator.geraLinhaDigitavelPara(codigoDeBarras,this.banco)); } @Test public void testGetImage() { assertNotNull(this.banco.getImage()); } @Test public void testCarteira17ComConvenioSeteDigitosMaior1000000() { this.banco = new BancoDoBrasil(); this.boleto = this.boleto.comBanco(this.banco); Beneficiario beneficiario = Beneficiario.novoBeneficiario().comNumeroConvenio("2670001").comCarteira("17"); this.boleto.comBeneficiario(beneficiario); assertEquals("00191386000000040000000002670001000000000017", this.banco.geraCodigoDeBarrasPara(boleto)); } }