github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/bradescoNetEmpresa/validations_test.go (about) 1 package bradescoNetEmpresa 2 3 import ( 4 "fmt" 5 "github.com/mundipagg/boleto-api/models" 6 "github.com/mundipagg/boleto-api/test" 7 "github.com/mundipagg/boleto-api/validations" 8 "github.com/stretchr/testify/assert" 9 "testing" 10 "time" 11 ) 12 13 var agencyNumberParameters = []test.Parameter{ 14 {Input: "1", Expected: true}, 15 {Input: "12", Expected: true}, 16 {Input: "123", Expected: true}, 17 {Input: "1234", Expected: true}, 18 {Input: "123A", Expected: true}, 19 {Input: "", Expected: false}, 20 {Input: " ", Expected: false}, 21 {Input: "123456789", Expected: false}, 22 } 23 24 var accountNumberParameters = []test.Parameter{ 25 {Input: "1", Expected: true}, 26 {Input: "12", Expected: true}, 27 {Input: "123", Expected: true}, 28 {Input: "1234", Expected: true}, 29 {Input: "123A", Expected: true}, 30 {Input: "123456789", Expected: false}, 31 {Input: " ", Expected: false}, 32 {Input: "", Expected: false}, 33 } 34 35 var walletParameters = []test.Parameter{ 36 {Input: uint16(4), Expected: true}, 37 {Input: uint16(9), Expected: true}, 38 {Input: uint16(19), Expected: true}, 39 {Input: uint16(1), Expected: false}, 40 {Input: uint16(6), Expected: false}, 41 {Input: uint16(20), Expected: false}, 42 } 43 44 var boletoTypeKeyParameters = []test.Parameter{ 45 {Input: models.Title{BoletoType: ""}, Expected: true}, 46 {Input: models.Title{BoletoType: "CH"}, Expected: true}, 47 {Input: models.Title{BoletoType: "DM"}, Expected: true}, 48 {Input: models.Title{BoletoType: "DS"}, Expected: true}, 49 {Input: models.Title{BoletoType: "NP"}, Expected: true}, 50 {Input: models.Title{BoletoType: "RC"}, Expected: true}, 51 {Input: models.Title{BoletoType: "OUT"}, Expected: true}, 52 {Input: models.Title{BoletoType: "A"}, Expected: false}, 53 {Input: models.Title{BoletoType: "ABC"}, Expected: false}, 54 } 55 56 var expirationDateParameters = []test.Parameter{ 57 {Input: "2025-01-01", Expected: true}, 58 {Input: "2025-02-20", Expected: true}, 59 {Input: "2025-02-21", Expected: true}, 60 {Input: "2025-02-22", Expected: false}, 61 {Input: "2025-12-31", Expected: false}, 62 } 63 64 func Test_AgencyValidation_WhenTypeIsBoletoRequest(t *testing.T) { 65 66 for _, fact := range agencyNumberParameters { 67 request := newStubBoletoRequestBradescoNetEmpresa().WithAgreementAgency(fact.Input.(string)).Build() 68 result := bradescoNetEmpresaValidateAgency(request) 69 assert.Equal(t, fact.Expected, result == nil, fmt.Sprintf("O resultado: %d não condiz com o esperado: %d, utilizando o input: %d", result, fact.Expected, fact.Input)) 70 } 71 } 72 73 func Test_AgencyValidation_WhenTypeIsInvalid(t *testing.T) { 74 75 request := "Não é um boleto request" 76 result := bradescoNetEmpresaValidateAgency(request) 77 assert.IsType(t, models.ErrorResponse{}, result, fmt.Sprintf("O tipo do resultado: %T não condiz com o tipo esperado: %T", result, models.ErrorResponse{})) 78 } 79 80 func Test_AccountValidation_WhenTypeIsBoletoRequest(t *testing.T) { 81 82 for _, fact := range accountNumberParameters { 83 request := newStubBoletoRequestBradescoNetEmpresa().WithAgreementAccount(fact.Input.(string)).Build() 84 result := bradescoNetEmpresaValidateAccount(request) 85 assert.Equal(t, fact.Expected, result == nil, fmt.Sprintf("O resultado: %d não condiz com o esperado: %d, utilizando o input: %d", result, fact.Expected, fact.Input)) 86 } 87 } 88 89 func Test_AccountValidation_WhenTypeIsInvalid(t *testing.T) { 90 91 request := "Não é um boleto request" 92 result := bradescoNetEmpresaValidateAccount(request) 93 assert.IsType(t, models.ErrorResponse{}, result, fmt.Sprintf("O tipo do resultado: %T não condiz com o tipo esperado: %T", result, models.ErrorResponse{})) 94 } 95 96 func Test_WalletValidation_WhenTypeIsBoletoRequest(t *testing.T) { 97 98 for _, fact := range walletParameters { 99 request := newStubBoletoRequestBradescoNetEmpresa().WithWallet(fact.Input.(uint16)).Build() 100 result := bradescoNetEmpresaValidateWallet(request) 101 assert.Equal(t, fact.Expected, result == nil, fmt.Sprintf("O resultado: %d não condiz com o esperado: %d, utilizando o input: %d", result, fact.Expected, fact.Input)) 102 } 103 } 104 105 func Test_WalletValidation_WhenTypeIsInvalid(t *testing.T) { 106 107 request := "Não é um boleto request" 108 result := bradescoNetEmpresaValidateWallet(request) 109 assert.IsType(t, models.ErrorResponse{}, result, fmt.Sprintf("O tipo do resultado: %T não condiz com o tipo esperado: %T", result, models.ErrorResponse{})) 110 } 111 112 func Test_BoletoTypeValidation_WhenTypeIsBoletoRequest(t *testing.T) { 113 114 for _, fact := range boletoTypeKeyParameters { 115 request := newStubBoletoRequestBradescoNetEmpresa().WithBoletoType(fact.Input.(models.Title)).Build() 116 result := bradescoNetEmpresaBoletoTypeValidate(request) 117 assert.Equal(t, fact.Expected, result == nil, fmt.Sprintf("O resultado: %d não condiz com o esperado: %d, utilizando o input: %d", result, fact.Expected, fact.Input)) 118 } 119 } 120 121 func Test_BoletoTypeValidation_WhenTypeIsInvalid(t *testing.T) { 122 123 request := "Não é um boleto request" 124 result := bradescoNetEmpresaBoletoTypeValidate(request) 125 assert.IsType(t, models.ErrorResponse{}, result, fmt.Sprintf("O tipo do resultado: %T não condiz com o tipo esperado: %T", result, models.ErrorResponse{})) 126 } 127 128 func Test_MaxDateExpirationBlockValidation_WhenTypeIsBoletoRequest(t *testing.T) { 129 130 for _, fact := range expirationDateParameters { 131 expDate, _ := time.Parse("2006-01-02", fact.Input.(string)) 132 request := newStubBoletoRequestBradescoNetEmpresa().WithExpirationDate(expDate).Build() 133 result := validations.ValidateMaxExpirationDate(request) 134 assert.Equal(t, fact.Expected, result == nil, fmt.Sprintf("O resultado: %d não condiz com o esperado: %d, utilizando o input: %d", result, fact.Expected, fact.Input)) 135 } 136 } 137 138 func Test_MaxDateExpirationBlockValidation_WhenTypeIsInvalid(t *testing.T) { 139 140 request := "Não é um boleto request" 141 result := validations.ValidateMaxExpirationDate(request) 142 assert.IsType(t, models.ErrorResponse{}, result, fmt.Sprintf("O tipo do resultado: %T não condiz com o tipo esperado: %T", result, models.ErrorResponse{})) 143 }