package br.com.caelum.stella.boleto.bancos;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Test;
import br.com.caelum.stella.boleto.Banco;
import br.com.caelum.stella.boleto.Beneficiario;
import br.com.caelum.stella.boleto.exception.BancoNaoSuportadoException;
public class BancosTest {
private Beneficiario beneficiario = Beneficiario.novoBeneficiario();
@Test
public void deveRetornarOBancoBaseadoNoNumero() throws Exception {
Banco brasil = Bancos.getPorNumero("001");
Banco itau = Bancos.getPorNumero("341");
Assert.assertThat(brasil, Matchers.instanceOf(BancoDoBrasil.class));
Assert.assertThat(itau, Matchers.instanceOf(Itau.class));
}
@Test(expected=BancoNaoSuportadoException.class)
public void deveLancarExceptionSeOBancoNaoEhSuportado() {
Bancos.getPorNumero("9999");
}
@Test
public void obterAgenciaECodigoBeneficiarioFormatadoSemDV() throws Exception {
Banco banco = new BancoDoBrasil();
beneficiario.comAgencia("1234").comDigitoAgencia(null)
.comCodigoBeneficiario("12345678").comDigitoCodigoBeneficiario(null);
assertThat(banco.getAgenciaECodigoBeneficiario(beneficiario), is("1234/12345678"));
}
@Test
public void obterAgenciaECodigoBeneficiarioFormatado() throws Exception {
Banco banco = new BancoDoBrasil();
beneficiario.comAgencia("1234").comDigitoAgencia("3")
.comCodigoBeneficiario("12345678").comDigitoCodigoBeneficiario("9");
assertThat(banco.getAgenciaECodigoBeneficiario(beneficiario), is("1234-3/12345678-9"));
}
}