package br.com.caelum.stella.gateway.integration;
import java.math.BigDecimal;
import java.net.URISyntaxException;
import java.util.Calendar;
import javax.servlet.http.HttpServletRequest;
import junit.framework.Assert;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.junit.Test;
import br.com.caelum.stella.gateway.bb.BBFormualrioRetornoReturn;
import br.com.caelum.stella.gateway.bb.BBFormularioInformaReturn;
import br.com.caelum.stella.gateway.bb.BBFormularioSondaReturn;
import br.com.caelum.stella.gateway.bb.BBFormularioSondaReturnBuilder;
import br.com.caelum.stella.gateway.bb.BBVerificaFormularioInforma;
import br.com.caelum.stella.gateway.bb.BBVerificaFormularioRetorno;
import br.com.caelum.stella.gateway.bb.BBSituacao;
import br.com.caelum.stella.gateway.bb.BBTipoTransacao;
public class BBTestRetornoIntegracao {
@Test
public void testRetornoForumalrioSondaString(){
BBFormularioSondaReturn formularioSondaReturn = BBFormularioSondaReturnBuilder.STRING.buildReturn("1234567890123456700000000000100012345620002042009");
assertResultsFormularioSonda(formularioSondaReturn);
}
@Test
public void testRetornoFormularioSondaXML() throws URISyntaxException{
StringBuilder xml = new StringBuilder("<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>");
xml.append("<!DOCTYPE lojavirtual SYSTEM \"lojavirtual.dtd\">");
xml.append("<FORMULARIO>");
xml.append("<ENTRADA nome=\"refTran\" valor=\"12345678901234567\" />");
xml.append("<ENTRADA nome=\"valor\" valor=\"000000000001000\" />");
xml.append("<ENTRADA nome=\"idConv\" valor=\"123456\" />");
xml.append("<ENTRADA nome=\"tpPagamento\" valor=\"2\" />");
xml.append("<ENTRADA nome=\"situacao\" valor=\"00\" />");
xml.append("<ENTRADA nome=\"dataPagamento\" valor=\"02042009\" />");
xml.append("</FORMULARIO>");
BBFormularioSondaReturn formularioSondaReturn = BBFormularioSondaReturnBuilder.XML.buildReturn(xml.toString());
assertResultsFormularioSonda(formularioSondaReturn);
}
private void assertResultsFormularioSonda(BBFormularioSondaReturn formularioSondaReturn) {
Assert.assertEquals("12345678901234567",formularioSondaReturn.getRefTran());
Assert.assertEquals(BigDecimal.TEN.setScale(2),formularioSondaReturn.getValor());
Assert.assertEquals(123456,formularioSondaReturn.getIdConv());
Assert.assertEquals(BBTipoTransacao.BLOQUETO_BANCARIO,formularioSondaReturn.getTipoTransacao());
Assert.assertEquals(BBSituacao.PAGAMENTO_EFETUADO,formularioSondaReturn.getSituacao());
Calendar dataPagameto = Calendar.getInstance();
dataPagameto.set(Calendar.DAY_OF_MONTH,2);
dataPagameto.set(Calendar.MONTH,Calendar.APRIL);
dataPagameto.set(Calendar.YEAR,2009);
Assert.assertEquals(dataPagameto.get(Calendar.DAY_OF_MONTH),formularioSondaReturn.getDataPagamento().get(Calendar.DAY_OF_MONTH));
Assert.assertEquals(dataPagameto.get(Calendar.MONTH),formularioSondaReturn.getDataPagamento().get(Calendar.MONTH));
Assert.assertEquals(dataPagameto.get(Calendar.YEAR),formularioSondaReturn.getDataPagamento().get(Calendar.YEAR));
}
@Test
public void testRetornoFormularioRetorno(){
Mockery mockery = new Mockery();
final HttpServletRequest request = mockery.mock(HttpServletRequest.class);
mockery.checking(new Expectations(){
{
one(request).getParameter("tpPagamento");will(returnValue("2"));
one(request).getParameter("idConv");will(returnValue("123456"));
one(request).getParameter("refTran");will(returnValue("123456789012345"));
}
});
BBFormualrioRetornoReturn formualrioRetornoReturn = new BBVerificaFormularioRetorno(request).handle();
Assert.assertEquals(BBTipoTransacao.BLOQUETO_BANCARIO,formualrioRetornoReturn.getTipoTransacao());
Assert.assertEquals(123456,formualrioRetornoReturn.getIdConv());
Assert.assertEquals("123456789012345",formualrioRetornoReturn.getRefTran());
}
@Test
public void testRetornoFormularioInforma(){
Mockery mockery = new Mockery();
final HttpServletRequest request = mockery.mock(HttpServletRequest.class);
mockery.checking(new Expectations(){
{
one(request).getParameter("valor");will(returnValue("1000"));
one(request).getParameter("idConv");will(returnValue("123456"));
one(request).getParameter("refTran");will(returnValue("123456789012345"));
}
});
BBFormularioInformaReturn formularioInformaReturn = new BBVerificaFormularioInforma(request).handle();
Assert.assertEquals(BigDecimal.TEN.setScale(2),formularioInformaReturn.getValor());
Assert.assertEquals(123456,formularioInformaReturn.getIdConv());
Assert.assertEquals("123456789012345",formularioInformaReturn.getRefTran());
}
}