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 }