package br.com.caelum.stella.boleto.bancos; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; 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.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; public class SantanderTest { private Santander banco = new Santander(); private Beneficiario beneficiario; private Boleto boleto; @Rule public ExpectedException excecao = ExpectedException.none(); @Before public void setUp() { Datas datas = Datas.novasDatas().comDocumento(29, 04, 2013) .comProcessamento(29, 04, 2013).comVencimento(8, 05, 2013); this.beneficiario = Beneficiario.novoBeneficiario().comNomeBeneficiario("PETROBRAS") .comAgencia("6790").comDigitoAgencia("0").comCarteira("102") .comNumeroConvenio("5260965").comNossoNumero("105613749501") .comDigitoNossoNumero("4"); Pagador pagador = Pagador.novoPagador().comNome("PAULO SILVEIRA") ; boleto = Boleto.novoBoleto().comEspecieDocumento("DM") .comBanco(banco).comDatas(datas).comBeneficiario(beneficiario) .comPagador(pagador).comValorBoleto(219.50).comAceite(Boolean.FALSE) .comInstrucoes("instrucao 1", "instrucao 2", "instrucao 3", "instrucao 4") .comLocaisDePagamento("local 1", "local 2") .comNumeroDoDocumento("105613749501"); } @Test public void testCodigoDeBarraDoBancoSantander() { String string = "03392569200000219509526096510561374950140102"; assertEquals(string, banco.geraCodigoDeBarrasPara(boleto)); } @Test public void testGetImage() { assertNotNull(banco.getImage()); } @Test public void testNossoNumeroDoBeneficiarioFormatado() { this.beneficiario = Beneficiario.novoBeneficiario().comNomeBeneficiario("BOTICARIO") .comAgencia("6790").comDigitoAgencia("0").comCarteira("102") .comCodigoBeneficiario("5260965").comNossoNumero("12").comDigitoNossoNumero("4"); assertThat(banco.getNossoNumeroFormatado(beneficiario), is("0000000000124")); } @Test public void testUtilizarNumeroConvenio() throws Exception { this.beneficiario = Beneficiario.novoBeneficiario().comNomeBeneficiario("BOTICARIO") .comNumeroConvenio("3903125").comCarteira("102") .comNossoNumero("382713000472").comDigitoNossoNumero("2"); boleto.comBeneficiario(beneficiario); assertThat(banco.geraCodigoDeBarrasPara(boleto), is("03391569200000219509390312538271300047220102")); } @Test public void testUtilizarDigitoNossoNumero() throws Exception { this.beneficiario = Beneficiario.novoBeneficiario().comNomeBeneficiario("BOTICARIO") .comNumeroConvenio("3903125").comCarteira("102") .comNossoNumero("382713000472").comDigitoNossoNumero("2"); assertThat(banco.getNossoNumeroFormatado(beneficiario), is("3827130004722")); } @Test public void naoAparecerNuloEmAgenciaECodigoBeneficiarioFormatado() throws Exception { this.banco = new Santander(); beneficiario.comAgencia("12345").comDigitoAgencia(null).comNumeroConvenio("1234567"); assertThat(banco.getAgenciaECodigoBeneficiario(beneficiario), is("12345/1234567")); } @Test public void testRetornarDigitoNossoNumero() throws Exception { String[][] parametros = { { "566612457800", "2" }, { "566612457801", "0" }, { "566612457802", "9" }, { "566612457803", "7" }, { "566612457804", "5" }, { "566612457810", "0" } }; for (String[] parametro : parametros) { String nossoNumero = parametro[0]; beneficiario.comNossoNumero(nossoNumero); String digito = banco.getGeradorDeDigito().calculaDVNossoNumero(beneficiario.getNossoNumero()); String digitoEsperado = parametro[1]; assertThat("Para o nosso nĂºmero " + nossoNumero, digito, is(digitoEsperado)); } } @Test public void testLancarExcecaoQuandoNossoNumeroForMaiorQueDoze() throws Exception { excecao.expect(IllegalArgumentException.class); beneficiario.comNossoNumero("1056137495014"); banco.getGeradorDeDigito().calculaDVNossoNumero(beneficiario.getNossoNumero()); } @Test public void testLancarExcecaoQuandoNossoNumeroForNulo() throws Exception { excecao.expect(IllegalArgumentException.class); beneficiario.comNossoNumero(null); banco.getGeradorDeDigito().calculaDVNossoNumero(beneficiario.getNossoNumero()); } @Test public void testRetornarDigitoQuandoNossoNumeroForMenorQueDoze() throws Exception { beneficiario.comNossoNumero("1"); String digito = banco.getGeradorDeDigito().calculaDVNossoNumero(beneficiario.getNossoNumero()); assertThat(digito, is("9")); } @Test public void testAdicionarDVNossoNumeroQuandoOMesmoEstaNulo() throws Exception { String nossoNumero = "105613749501"; String dvNossoNumero = "4"; beneficiario.comNossoNumero(nossoNumero); assertThat(nossoNumero+dvNossoNumero, is(banco.getNossoNumeroFormatado(beneficiario))); } @Test public void testAdicionarDVNossoNumeroQuandoOMesmoEstaPreenchido() throws Exception { String nossoNumero = "566612457803"; String dvNossoNumero = "5"; beneficiario.comNossoNumero(nossoNumero); beneficiario.comDigitoNossoNumero(dvNossoNumero); assertThat(nossoNumero+dvNossoNumero, is(banco.getNossoNumeroFormatado(beneficiario))); } }