github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/itau/itau_test.go (about) 1 package itau 2 3 import ( 4 "testing" 5 6 "github.com/mundipagg/boleto-api/mock" 7 "github.com/mundipagg/boleto-api/models" 8 "github.com/mundipagg/boleto-api/test" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 var boletoTypeParameters = []test.Parameter{ 13 {Input: models.Title{BoletoType: ""}, Expected: "01"}, 14 {Input: models.Title{BoletoType: "NSA"}, Expected: "01"}, 15 {Input: models.Title{BoletoType: "BDP"}, Expected: "18"}, 16 {Input: models.Title{BoletoType: "DM"}, Expected: "01"}, 17 {Input: models.Title{BoletoType: "DS"}, Expected: "08"}, 18 {Input: models.Title{BoletoType: "NP"}, Expected: "02"}, 19 {Input: models.Title{BoletoType: "RC"}, Expected: "05"}, 20 {Input: models.Title{BoletoType: "OUT"}, Expected: "99"}, 21 } 22 23 func TestProcessBoleto_WhenServiceRespondsSuccessfully_ShouldHasSuccessfulBoletoResponse(t *testing.T) { 24 mock.StartMockService("9041") 25 input := newStubBoletoRequestItau().Build() 26 bank := New() 27 28 output, _ := bank.ProcessBoleto(input) 29 30 test.AssertProcessBoletoWithSuccess(t, output) 31 } 32 33 func TestProcessBoleto_WhenServiceRespondsFailed_ShouldHasFailedBoletoResponse(t *testing.T) { 34 mock.StartMockService("9039") 35 input := newStubBoletoRequestItau().WithAmountInCents(400).Build() 36 37 bank := New() 38 39 output, err := bank.ProcessBoleto(input) 40 41 assert.Nil(t, err, "Não deve haver um erro") 42 test.AssertProcessBoletoFailed(t, output) 43 } 44 45 func TestProcessBoleto_WhenServiceRespondsFailedWithWrongContentAndStatusCodeIs500_ShouldHasFailedBoletoResponseWithWrongContentAndStatusCodeIs500(t *testing.T) { 46 mock.StartMockService("9040") 47 input := newStubBoletoRequestItau().WithAmountInCents(500).Build() 48 49 bank := New() 50 51 _, errProcessBoleto := bank.ProcessBoleto(input) 52 53 test.AssertError(t, errProcessBoleto, models.BadGatewayError{}) 54 } 55 56 func TestProcessBoleto_WhenRequestHasInvalidAccountParameters_ShouldHasFailedBoletoResponse(t *testing.T) { 57 mock.StartMockService("9037") 58 input := newStubBoletoRequestItau().WithAmountInCents(200).WithAgreementAccount("").Build() 59 60 bank := New() 61 62 output, _ := bank.ProcessBoleto(input) 63 64 test.AssertProcessBoletoFailed(t, output) 65 } 66 67 func TestProcessBoleto_WhenRequestHasInvalidUserNameParameter_ShouldHasFailedBoletoResponse(t *testing.T) { 68 mock.StartMockService("9038") 69 input := newStubBoletoRequestItau().WithAuthenticationUserName("").WithAmountInCents(200).Build() 70 71 bank := New() 72 73 _, err := bank.ProcessBoleto(input) 74 75 assert.NotNil(t, err, "Deve ocorrer um erro") 76 } 77 78 func TestGetBoletoType_WhenCalled_ShouldBeMapTypeSuccessful(t *testing.T) { 79 request := newStubBoletoRequestItau().Build() 80 for _, fact := range boletoTypeParameters { 81 request.Title = fact.Input.(models.Title) 82 _, result := getBoletoType(request) 83 assert.Equal(t, fact.Expected, result, "Deve mapear o boleto type corretamente") 84 } 85 } 86 87 func TestTemplateResponse_WhenRequestHasSpecialCharacter_ShouldBeParsedSuccessful(t *testing.T) { 88 mock.StartMockService("9042") 89 input := newStubBoletoRequestItau().WithBuyerName("Usuario \tTeste").Build() 90 bank := New() 91 92 output, _ := bank.ProcessBoleto(input) 93 94 test.AssertProcessBoletoWithSuccess(t, output) 95 }