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

     1  package stone
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/mundipagg/boleto-api/models"
     7  	"github.com/mundipagg/boleto-api/test"
     8  )
     9  
    10  const day = time.Hour * 24
    11  
    12  type stubBoletoRequestStone struct {
    13  	test.StubBoletoRequest
    14  }
    15  
    16  //newStubBoletoRequestStone Cria um novo StubBoletoRequest com valores default validáveis para Stone
    17  func newStubBoletoRequestStone() *stubBoletoRequestStone {
    18  	expirationDate := time.Now().Add(5 * day)
    19  
    20  	base := test.NewStubBoletoRequest(models.Stone)
    21  	s := &stubBoletoRequestStone{
    22  		StubBoletoRequest: *base,
    23  	}
    24  
    25  	s.Authentication = models.Authentication{
    26  		Username:           "VsKkTASTTdri0",
    27  		Password:           "Tkms6VwoPdjLWFCLOLhYt_KbV2hIvdWqmNKQX7XOVclTnigKXmn6CqQMf2UxhVoo",
    28  		AuthorizationToken: "",
    29  		AccessKey:          "946b50ce-ed5d-45ab-8c86-ce3baf90a73a",
    30  	}
    31  
    32  	s.Title = models.Title{
    33  		ExpireDateTime: expirationDate,
    34  		ExpireDate:     expirationDate.Format("2006-01-02"),
    35  		AmountInCents:  201,
    36  		Instructions:   "Sr. Caixa, favor não receber após vencimento",
    37  		DocumentNumber: "999999999999999",
    38  	}
    39  
    40  	s.Recipient = models.Recipient{
    41  		Document: models.Document{
    42  			Type:   "CNPJ",
    43  			Number: "12123123000112",
    44  		},
    45  	}
    46  
    47  	s.Buyer = models.Buyer{
    48  		Name:  "Nome do Comprador",
    49  		Email: "",
    50  		Document: models.Document{
    51  			Type:   "CPF",
    52  			Number: "39734022059",
    53  		},
    54  		Address: models.Address{
    55  			Street:     "Logradouro do Comprador",
    56  			Number:     "1000",
    57  			Complement: "Casa 01",
    58  			ZipCode:    "15050466",
    59  			City:       "Cidade do Comprador",
    60  			District:   "Bairro do Comprador",
    61  			StateCode:  "SP",
    62  		},
    63  	}
    64  
    65  	return s
    66  }
    67  
    68  func (s *stubBoletoRequestStone) WithBoletoType(bt string) *stubBoletoRequestStone {
    69  	switch bt {
    70  	case "DM":
    71  		s.Title.BoletoType, s.Title.BoletoTypeCode = bt, "bill_of_exchange"
    72  	default:
    73  		s.Title.BoletoType = bt
    74  	}
    75  	return s
    76  }
    77  
    78  func (s *stubBoletoRequestStone) WithDocument(number string, doctype string) *stubBoletoRequestStone {
    79  	s.Buyer.Document.Type = doctype
    80  	s.Buyer.Document.Number = number
    81  	return s
    82  }
    83  
    84  func (s *stubBoletoRequestStone) WithAccessKey(key string) *stubBoletoRequestStone {
    85  	s.Authentication.AccessKey = key
    86  	return s
    87  }
    88  
    89  func (s *stubBoletoRequestStone) WithBuyerName(buyerName string) *stubBoletoRequestStone {
    90  	s.Buyer.Name = buyerName
    91  	return s
    92  }
    93  
    94  func (s *stubBoletoRequestStone) WithMaxDaysToPayPastDue(days uint) *stubBoletoRequestStone {
    95  	s.Title.Rules = &models.Rules{
    96  		MaxDaysToPayPastDue: days,
    97  	}
    98  	return s
    99  }