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 SafraTest {
private Safra banco;
private Beneficiario beneficiario;
private Boleto boleto;
@Before
public void setup() {
Datas datas = Datas.novasDatas()
.comDocumento(25, 07, 2013)
.comVencimento(26, 07, 2013)
.comProcessamento(25, 07, 2013);
this.beneficiario = Beneficiario.novoBeneficiario()
.comNomeBeneficiario("Supermercado e Comercio XYZ LTDA")
.comAgencia("1")
.comDigitoAgencia("8")
.comCodigoBeneficiario("1245")
.comDigitoCodigoBeneficiario("1")
.comNossoNumero("4")
.comDigitoNossoNumero("3");
Pagador pagador = Pagador.novoPagador()
.comNome("Distribuidora de Alimentos SSH LTDA");
banco = new Safra();
this.boleto = Boleto.novoBoleto()
.comDatas(datas)
.comBeneficiario(this.beneficiario)
.comPagador(pagador)
.comValorBoleto(19.80)
.comNumeroDoDocumento("14048");
}
@Test
public void numeroDoBancoDeveTerTresDigitos() {
assertEquals(banco.getNumeroFormatado().length(), 3);
}
@Test
public void contaCorrenteDoEmissorDeveTerNoveDigitos() {
assertEquals(9, this.banco.getCodigoBeneficiarioFormatado(this.beneficiario).length());
}
@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 nossoNumeroDoEmissorDeveTerNoveDigitos() {
assertEquals(9, this.banco.getNossoNumeroFormatado(this.beneficiario).length());
}
@Test
public void numeroDoBancoComODigitoDeveTerCincoDigitos() {
String numeroDoBanco = this.banco.getNumeroFormatadoComDigito();
assertEquals("422-7", numeroDoBanco);
assertEquals(5, numeroDoBanco.length());
}
@Test
public void dadoOsDadosDoBancoEDoEmissorDeveGerarALinhaDigitavelDoCodigoDeBarras() {
this.boleto = this.boleto.comBanco(this.banco);
GeradorDeLinhaDigitavel linhaDigitavelGenerator = new GeradorDeLinhaDigitavel();
String codigoDeBarras = boleto.getBanco().geraCodigoDeBarrasPara(this.boleto);
assertEquals("42297.00002 10000.124510 00000.000422 4 57710000001980", linhaDigitavelGenerator.geraLinhaDigitavelPara(codigoDeBarras,this.banco));
}
@Test
public void dadoOBancoEAMoedaODigitoVerificadorDaPosicaoCincoDeveSerQuatro() {
this.boleto = this.boleto.comBanco(this.banco);
String linhaCodigoDeBarras = this.banco.geraCodigoDeBarrasPara(this.boleto);
assertEquals("4", linhaCodigoDeBarras.substring(4, 5));
}
@Test
public void testGetImage() {
assertNotNull(this.banco.getImage());
}
}