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  }