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

     1  package bradescoShopFacil
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/mundipagg/boleto-api/mock"
     8  	"github.com/mundipagg/boleto-api/models"
     9  	"github.com/mundipagg/boleto-api/test"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  var boletoTypeParameters = []test.Parameter{
    14  	{Input: models.Title{BoletoType: ""}, Expected: "01"},
    15  	{Input: models.Title{BoletoType: "NSA"}, Expected: "01"},
    16  	{Input: models.Title{BoletoType: "BDP"}, Expected: "01"},
    17  	{Input: models.Title{BoletoType: "DM"}, Expected: "01"},
    18  	{Input: models.Title{BoletoType: "DS"}, Expected: "12"},
    19  	{Input: models.Title{BoletoType: "NP"}, Expected: "02"},
    20  	{Input: models.Title{BoletoType: "RC"}, Expected: "05"},
    21  	{Input: models.Title{BoletoType: "OUT"}, Expected: "99"},
    22  }
    23  
    24  func TestProcessBoleto_WhenServiceRespondsSuccessfully_ShouldHasSuccessfulBoletoResponse(t *testing.T) {
    25  	mock.StartMockService("9015")
    26  	input := newStubBoletoRequestBradescoShopFacil().Build()
    27  	bank := New()
    28  
    29  	output, _ := bank.ProcessBoleto(input)
    30  
    31  	test.AssertProcessBoletoWithSuccess(t, output)
    32  }
    33  
    34  func TestProcessBoleto_WhenServiceRespondsFailed_ShouldHasFailedBoletoResponse(t *testing.T) {
    35  	mock.StartMockService("9014")
    36  	input := newStubBoletoRequestBradescoShopFacil().WithAmountInCents(400).Build()
    37  	bank := New()
    38  
    39  	output, _ := bank.ProcessBoleto(input)
    40  
    41  	test.AssertProcessBoletoFailed(t, output)
    42  }
    43  
    44  func TestBarcodeGenerationBradescoShopFacil(t *testing.T) {
    45  	const expected = "23795796800000001990001250012446693212345670"
    46  	expireDate, _ := time.Parse("02-01-2006", "01-08-2019")
    47  	boleto := newStubBoletoRequestBradescoShopFacil().WithAgreementAgency("1").WithAgreementAccount("1234567").WithExpirationDate(expireDate).WithAmountInCents(199).WithOurNumber(124466932).Build()
    48  
    49  	bc := getBarcode(*boleto)
    50  
    51  	assert.Equal(t, expected, bc.toString(), "Deve-se montar o código de barras do BradescoShopFacil")
    52  }
    53  
    54  func TestRemoveDigitFromAccount(t *testing.T) {
    55  	const expected = "23791796800000001992372250012446693300056000"
    56  
    57  	bc := barcode{
    58  		account:       "0005600",
    59  		bankCode:      "237",
    60  		currencyCode:  "9",
    61  		agency:        "2372",
    62  		dateDueFactor: "7968",
    63  		ourNumber:     "00124466933",
    64  		zero:          "0",
    65  		wallet:        "25",
    66  		value:         "0000000199",
    67  	}
    68  
    69  	assert.Equal(t, expected, bc.toString(), "Deve-se montar identificar e remover o digito da conta")
    70  }
    71  
    72  func TestGetBoletoType_WhenCalled_ShouldBeMapTypeSuccessful(t *testing.T) {
    73  	BradescoShopFacilStub := newStubBoletoRequestBradescoShopFacil().Build()
    74  	for _, fact := range boletoTypeParameters {
    75  		BradescoShopFacilStub.Title = fact.Input.(models.Title)
    76  		_, result := getBoletoType(BradescoShopFacilStub)
    77  		assert.Equal(t, fact.Expected, result, "Deve mapear o boleto type corretamente")
    78  	}
    79  }