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

     1  package santander
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/mundipagg/boleto-api/mock"
     7  	"github.com/mundipagg/boleto-api/models"
     8  	"github.com/mundipagg/boleto-api/test"
     9  	"github.com/mundipagg/boleto-api/util"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  const baseMockJSON = `
    14  {
    15  	"BankNumber": 33,
    16  	"Agreement": {
    17  		"AgreementNumber": 11111111,		
    18  		"Agency":"5555",
    19  		"Account":"55555"
    20  	},
    21  	"Title": {
    22  		"ExpireDate": "2035-08-01",
    23  		"AmountInCents": 200,
    24  		"OurNumber":10000000004		
    25  	},
    26  	"Buyer": {
    27  		"Name": "TESTE",
    28  		"Document": {
    29  			"Type": "CPF",
    30  			"Number": "12345678903"
    31  		}		
    32  	},
    33  	"Recipient": {
    34  		"Name": "TESTE",
    35  		"Document": {
    36  			"Type": "CNPJ",
    37  			"Number": "55555555555555"
    38  		}		
    39  	}
    40  }
    41  `
    42  
    43  var boletoTypeParameters = []test.Parameter{
    44  	{Input: models.Title{BoletoType: ""}, Expected: "02"},
    45  	{Input: models.Title{BoletoType: "NSA"}, Expected: "02"},
    46  	{Input: models.Title{BoletoType: "BDP"}, Expected: "32"},
    47  	{Input: models.Title{BoletoType: "DM"}, Expected: "02"},
    48  	{Input: models.Title{BoletoType: "DS"}, Expected: "04"},
    49  	{Input: models.Title{BoletoType: "NP"}, Expected: "12"},
    50  	{Input: models.Title{BoletoType: "RC"}, Expected: "17"},
    51  	{Input: models.Title{BoletoType: "OUT"}, Expected: "99"},
    52  }
    53  
    54  func TestProcessBoleto_WhenServiceRespondsSuccessfully_ShouldHasSuccessfulBoletoResponse(t *testing.T) {
    55  	mock.StartMockService("9046")
    56  	input := new(models.BoletoRequest)
    57  	errConvert := util.FromJSON(baseMockJSON, input)
    58  	bank, _ := New()
    59  
    60  	output, _ := bank.ProcessBoleto(input)
    61  
    62  	assert.Nil(t, errConvert)
    63  	test.AssertProcessBoletoWithSuccess(t, output)
    64  }
    65  
    66  func TestGetBoletoType_WhenCalled_ShouldBeMapTypeSuccessful(t *testing.T) {
    67  	request := new(models.BoletoRequest)
    68  	for _, fact := range boletoTypeParameters {
    69  		request.Title = fact.Input.(models.Title)
    70  		_, result := getBoletoType(request)
    71  		assert.Equal(t, fact.Expected, result, "Deve mapear o boleto type corretamente")
    72  	}
    73  }