github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/issuer/issuer_test.go (about) 1 package issuer 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/mundipagg/boleto-api/test" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 var barCodeParameter = []test.Parameter{ 12 {Input: Issuer{barCode: "03391877100003841119"}, Expected: true}, 13 {Input: Issuer{barCode: "03391877100003841119794611200000957223350101"}, Expected: true}, 14 {Input: Issuer{barCode: "0339187710000384111979461120000095722335010103391877100003841119794611200000957223350101"}, Expected: true}, 15 {Input: Issuer{barCode: ""}, Expected: false}, 16 {Input: Issuer{barCode: " "}, Expected: false}, 17 {Input: Issuer{barCode: "abcdefghijklmnopqrstuvxwyz"}, Expected: false}, 18 {Input: Issuer{barCode: "a03391877100003841119"}, Expected: false}, 19 {Input: Issuer{barCode: "03391877100003841119b"}, Expected: false}, 20 {Input: Issuer{barCode: "033918771C00003841119"}, Expected: false}, 21 {Input: Issuer{barCode: "033 9187 71000 03841 119"}, Expected: false}, 22 {Input: Issuer{barCode: "*03391877100003841???1197946112´00000957223350101"}, Expected: false}, 23 } 24 25 var digitableLineParameter = []test.Parameter{ 26 {Input: Issuer{digitableLine: "23792.69307 40004.617383 11000.180908 9 877"}, Expected: true}, 27 {Input: Issuer{digitableLine: "23792.69307 40004.617383 11000.180908 9 87720000007290"}, Expected: true}, 28 {Input: Issuer{digitableLine: "23792.69307 40004.617383 11000.180908 9 87720000007290452564156412"}, Expected: true}, 29 {Input: Issuer{digitableLine: ""}, Expected: false}, 30 {Input: Issuer{digitableLine: " "}, Expected: false}, 31 {Input: Issuer{digitableLine: "a23792.69307 40004.617383 11000.180908 9 87720000007290"}, Expected: false}, 32 {Input: Issuer{digitableLine: "23792.b69307 40004.617383 11000.180908 9 87720000007290"}, Expected: false}, 33 {Input: Issuer{digitableLine: "23792.69307 400c04.617383 11000.180908 9 87720000007290"}, Expected: false}, 34 {Input: Issuer{digitableLine: "23792.69307 40004.617d383 11000.180908 9 87720000007290"}, Expected: false}, 35 {Input: Issuer{digitableLine: "23792.69307 40004.617383 110e00.180908 9 87720000007290"}, Expected: false}, 36 {Input: Issuer{digitableLine: "23792.69307 40004.617383 11000.1809FFF0f8 9 87720000007290"}, Expected: false}, 37 {Input: Issuer{digitableLine: "23792.69307 40004.617383 11000.180908 9g 87720000007290"}, Expected: false}, 38 {Input: Issuer{digitableLine: "23792.69307 40004.617383 11000.180908 9 877200000h07290"}, Expected: false}, 39 {Input: Issuer{digitableLine: "23792.69307 40004.617383 11000 9 87720000007290"}, Expected: false}, 40 {Input: Issuer{digitableLine: "2372.69307 40004.617383 11000.180908 9 87720000007290"}, Expected: false}, 41 {Input: Issuer{digitableLine: "23792.6937 40004.617383 11000.180908 9 87720000007290"}, Expected: false}, 42 {Input: Issuer{digitableLine: "23792.69307 4004.617383 11000.180908 9 87720000007290"}, Expected: false}, 43 {Input: Issuer{digitableLine: "23792.69307 40004.61383 11000.180908 9 87720000007290"}, Expected: false}, 44 {Input: Issuer{digitableLine: "23792.69307 40004.617383 1100.180908 9 87720000007290"}, Expected: false}, 45 {Input: Issuer{digitableLine: "23792.69307 40004.617383 11000.18008 9 87720000007290"}, Expected: false}, 46 {Input: Issuer{digitableLine: "23792.69307 40004.617383 11000.180908 87720000007290"}, Expected: false}, 47 {Input: Issuer{digitableLine: "23792.69307 40004.617383 11000.180908 9"}, Expected: false}, 48 {Input: Issuer{digitableLine: "^23792.69307 40004.617383 11000.180908 9 87720000007290"}, Expected: false}, 49 } 50 51 var barCodeAndDigitableLineParameters = []test.Parameter{ 52 {Input: Issuer{barCode: "03391877100003841119794611200000957223350101", digitableLine: "23792.69307 40004.617383 11000.180908 9 87720000007290"}, Expected: true}, 53 {Input: Issuer{barCode: "0339187abc7100003841119794611200000957223350101", digitableLine: "23792.69307 40004.617383 11000.180908 9 87720000007290"}, Expected: false}, 54 {Input: Issuer{barCode: "03391877100003841119794611200000957223350101", digitableLine: "23a792.693b07 400c04.61d7383 1100e0.180f908 9g 8772000h0007290"}, Expected: false}, 55 {Input: Issuer{barCode: "a0339187710000v,^^´[´p3841119794611", digitableLine: "11000.180908 9 87720000007290"}, Expected: false}, 56 } 57 58 func TestNewIssuer(t *testing.T) { 59 expectedBarCode := "0339187710000384111794611200000957223350101" 60 expectedDigitableLine := "2379.69307 40004.617383 11000.180908 9 87720000007290" 61 62 issuer := NewIssuer(expectedBarCode, expectedDigitableLine) 63 64 assert.Equal(t, expectedBarCode, issuer.barCode, "O barcode não foi atribuído corretamente") 65 assert.Equal(t, expectedDigitableLine, issuer.digitableLine, "A digitableline não foi atribuída corretamente") 66 } 67 68 func TestIsValidBarCode(t *testing.T) { 69 for _, fact := range barCodeParameter { 70 issuer := fact.Input.(Issuer) 71 result := issuer.IsValidBarCode() 72 73 assert.Equal(t, fact.Expected, result, fmt.Sprintf("O barCode não é válido %v ", fact.Input)) 74 } 75 } 76 77 func TestIsValidDigitableLine(t *testing.T) { 78 for _, fact := range digitableLineParameter { 79 issuer := fact.Input.(Issuer) 80 result := issuer.IsValidDigitableLine() 81 82 assert.Equal(t, fact.Expected, result, fmt.Sprintf("A linha digitável não é válida %v ", fact.Input)) 83 } 84 } 85 86 func TestIsValidDigitableLineAndBarCode(t *testing.T) { 87 for _, fact := range barCodeAndDigitableLineParameters { 88 issuer := fact.Input.(Issuer) 89 result := issuer.IsValidBarCode() && issuer.IsValidDigitableLine() 90 91 assert.Equal(t, fact.Expected, result, fmt.Sprintf("A linha digitável ou o código de barras não são válidos %v", fact.Input)) 92 } 93 }