github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/models/boleto_test.go (about)

     1  package models
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  var isBankNumberValidParameters = []ModelTestParameter{
    10  	{Input: BoletoRequest{BankNumber: BancoDoBrasil}, Expected: true},
    11  	{Input: BoletoRequest{BankNumber: Bradesco}, Expected: true},
    12  	{Input: BoletoRequest{BankNumber: Caixa}, Expected: true},
    13  	{Input: BoletoRequest{BankNumber: Citibank}, Expected: true},
    14  	{Input: BoletoRequest{BankNumber: Itau}, Expected: true},
    15  	{Input: BoletoRequest{BankNumber: Pefisa}, Expected: true},
    16  	{Input: BoletoRequest{BankNumber: Santander}, Expected: true},
    17  	{Input: BoletoRequest{BankNumber: Stone}, Expected: true},
    18  	{Input: BoletoRequest{BankNumber: 0}, Expected: false},
    19  }
    20  
    21  var bankNumberAndDigitParameters = []ModelTestParameter{
    22  	{Input: BoletoRequest{BankNumber: BancoDoBrasil}, Expected: "001-9"},
    23  	{Input: BoletoRequest{BankNumber: Bradesco}, Expected: "237-2"},
    24  	{Input: BoletoRequest{BankNumber: Caixa}, Expected: "104-0"},
    25  	{Input: BoletoRequest{BankNumber: Citibank}, Expected: "745-5"},
    26  	{Input: BoletoRequest{BankNumber: Itau}, Expected: "341-7"},
    27  	{Input: BoletoRequest{BankNumber: Pefisa}, Expected: "174"},
    28  	{Input: BoletoRequest{BankNumber: Santander}, Expected: "033-7"},
    29  	{Input: BoletoRequest{BankNumber: Stone}, Expected: "197-1"},
    30  	{Input: BoletoRequest{BankNumber: 0}, Expected: ""},
    31  }
    32  
    33  func Test_IsBankNumberValid(t *testing.T) {
    34  	for _, fact := range isBankNumberValidParameters {
    35  		input := fact.Input.(BoletoRequest)
    36  		result := input.BankNumber.IsBankNumberValid()
    37  		assert.Equal(t, fact.Expected.(bool), result)
    38  	}
    39  }
    40  
    41  func Test_GetBoletoBankNumberAndDigit(t *testing.T) {
    42  	for _, fact := range bankNumberAndDigitParameters {
    43  		input := fact.Input.(BoletoRequest)
    44  		result := input.BankNumber.GetBoletoBankNumberAndDigit()
    45  		assert.Equal(t, fact.Expected.(string), result)
    46  	}
    47  }
    48  
    49  func Test_HasErrorResponse(t *testing.T) {
    50  	withError := GetBoletoResponseError("CODE", "message")
    51  	resultWithError := withError.HasErrors()
    52  	assert.True(t, resultWithError)
    53  
    54  	withoutError := BoletoResponse{}
    55  	resultWithputError := withoutError.HasErrors()
    56  	assert.False(t, resultWithputError)
    57  }
    58  
    59  func Test_ViewToJson(t *testing.T) {
    60  	view := arrangeBoletoView()
    61  
    62  	result := view.ToJSON()
    63  
    64  	assert.Contains(t, result, `"bankNumber":"001-9"`)
    65  	assert.Contains(t, result, `"barcode":"123456789012345678901234567890"`)
    66  	assert.Contains(t, result, `"digitableLine":"123467890123456790134567890"`)
    67  	assert.Contains(t, result, `"ourNumber":"1234567890"`)
    68  }
    69  
    70  func Test_ViewToMinifyJSON(t *testing.T) {
    71  	view := arrangeBoletoView()
    72  
    73  	result := view.ToMinifyJSON()
    74  
    75  	assert.Contains(t, result, `"bankNumber":"001-9"`)
    76  	assert.Contains(t, result, `"barcode":"123456789012345678901234567890"`)
    77  	assert.Contains(t, result, `"digitableLine":"123467890123456790134567890"`)
    78  	assert.Contains(t, result, `"ourNumber":"1234567890"`)
    79  }
    80  
    81  func arrangeBoletoView() BoletoView {
    82  	request := BoletoRequest{BankNumber: BancoDoBrasil}
    83  	response := BoletoResponse{BarCodeNumber: "123456789012345678901234567890", DigitableLine: "123467890123456790134567890", OurNumber: "1234567890"}
    84  
    85  	return NewBoletoView(request, response, "BancoDoBrasil")
    86  }