github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/bank/bank_test.go (about) 1 package bank 2 3 import ( 4 "testing" 5 6 "github.com/mundipagg/boleto-api/bank/services/jpmorgan" 7 "github.com/mundipagg/boleto-api/bb" 8 "github.com/mundipagg/boleto-api/bradescoNetEmpresa" 9 "github.com/mundipagg/boleto-api/bradescoShopFacil" 10 "github.com/mundipagg/boleto-api/caixa" 11 "github.com/mundipagg/boleto-api/citibank" 12 "github.com/mundipagg/boleto-api/env" 13 "github.com/mundipagg/boleto-api/itau" 14 "github.com/mundipagg/boleto-api/models" 15 "github.com/mundipagg/boleto-api/pefisa" 16 "github.com/mundipagg/boleto-api/santander" 17 "github.com/mundipagg/boleto-api/stone" 18 19 "github.com/stretchr/testify/assert" 20 ) 21 22 type dataTest struct { 23 request models.BoletoRequest 24 bankNumber models.BankNumber 25 bank Bank 26 } 27 28 var bradescoNetEmpresaInstance = bradescoNetEmpresa.New() 29 var bradescoShopFacilInstance = bradescoShopFacil.New() 30 var bancoDoBrasilInstance = bb.New() 31 var citibankInstance, _ = citibank.New() 32 var santanderInstance, _ = santander.New() 33 var itauInstance = itau.New() 34 var caixaInstance = caixa.New() 35 var pefisaInstance = pefisa.New() 36 var stoneInstance = stone.New() 37 var jpInstanceInstance, _ = jpmorgan.New() 38 39 var getBankTestData = []dataTest{ 40 {models.BoletoRequest{BankNumber: models.Bradesco, Agreement: models.Agreement{Wallet: 9}}, models.Bradesco, bradescoNetEmpresaInstance}, 41 {models.BoletoRequest{BankNumber: models.Bradesco, Agreement: models.Agreement{Wallet: 25}}, models.Bradesco, bradescoShopFacilInstance}, 42 {models.BoletoRequest{BankNumber: models.BancoDoBrasil}, models.BancoDoBrasil, bancoDoBrasilInstance}, 43 {models.BoletoRequest{BankNumber: models.Citibank}, models.Citibank, citibankInstance}, 44 {models.BoletoRequest{BankNumber: models.Santander}, models.Santander, santanderInstance}, 45 {models.BoletoRequest{BankNumber: models.Itau}, models.Itau, itauInstance}, 46 {models.BoletoRequest{BankNumber: models.Caixa}, models.Caixa, caixaInstance}, 47 {models.BoletoRequest{BankNumber: models.Pefisa}, models.Pefisa, pefisaInstance}, 48 {models.BoletoRequest{BankNumber: models.Stone}, models.Stone, stoneInstance}, 49 {models.BoletoRequest{BankNumber: models.JPMorgan}, models.JPMorgan, jpInstanceInstance}, 50 } 51 52 func TestShouldExecuteBankStrategy(t *testing.T) { 53 env.Config(true, true, true) 54 for _, fact := range getBankTestData { 55 bank, err := Get(fact.request) 56 number := bank.GetBankNumber() 57 assert.Nil(t, err, "Não deve haver erro") 58 assert.True(t, number.IsBankNumberValid(), "Deve ser um banco válido") 59 assert.Equal(t, fact.bankNumber, number, "Deve conter o bankNumber correto") 60 assert.IsType(t, fact.bank, bank, "Deve ter instaciado o banco correto") 61 } 62 } 63 64 func TestGetBank_WhenInvalidBank_ReturnError(t *testing.T) { 65 request := models.BoletoRequest{BankNumber: 0} 66 67 result, err := Get(request) 68 69 assert.Nil(t, result, "Não deve haver banco") 70 assert.NotNil(t, err, "Deve haver erro") 71 assert.Equal(t, err.(models.ErrorResponse).Code, "MPBankNumber") 72 assert.Equal(t, err.(models.ErrorResponse).Message, "Banco 0 não existe") 73 }