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

     1  package caixa
     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 stubBoletoRequestCaixa struct {
    13  	test.StubBoletoRequest
    14  }
    15  
    16  //newStubBoletoRequestCaixa Cria um novo StubBoletoRequest com valores default validáveis para Caixa
    17  func newStubBoletoRequestCaixa() *stubBoletoRequestCaixa {
    18  	expirationDate := time.Now().Add(5 * day)
    19  
    20  	base := test.NewStubBoletoRequest(models.Caixa)
    21  	s := &stubBoletoRequestCaixa{
    22  		StubBoletoRequest: *base,
    23  	}
    24  
    25  	s.Agreement = models.Agreement{
    26  		AgreementNumber: 123456,
    27  		Agency:          "1234",
    28  	}
    29  
    30  	s.Title = models.Title{
    31  		ExpireDateTime: expirationDate,
    32  		ExpireDate:     expirationDate.Format("2006-01-02"),
    33  		OurNumber:      12345678901234,
    34  		AmountInCents:  200,
    35  		DocumentNumber: "1234567890A",
    36  		Instructions:   "Campo de instruções -  max 40 caracteres",
    37  		BoletoType:     "OUT",
    38  		BoletoTypeCode: "99",
    39  	}
    40  
    41  	s.Recipient = models.Recipient{
    42  		Document: models.Document{
    43  			Type:   "CNPJ",
    44  			Number: "12123123000112",
    45  		},
    46  	}
    47  
    48  	s.Buyer = models.Buyer{
    49  		Name: "Willian Jadson Bezerra Menezes Tupinambá",
    50  		Document: models.Document{
    51  			Type:   "CPF",
    52  			Number: "12312312312",
    53  		},
    54  	}
    55  	return s
    56  }
    57  
    58  func (s *stubBoletoRequestCaixa) WithBuyerAddress() *stubBoletoRequestCaixa {
    59  	s.Buyer.Address = models.Address{
    60  		Street:     "Rua da Assunção de Sá",
    61  		Number:     "123",
    62  		Complement: "Seção A, s 02",
    63  		ZipCode:    "20520051",
    64  		City:       "Belém do Pará",
    65  		District:   "Açaí",
    66  		StateCode:  "PA",
    67  	}
    68  	return s
    69  }
    70  
    71  func (s *stubBoletoRequestCaixa) WithStrictRules() *stubBoletoRequestCaixa {
    72  	s.Title.Rules = &models.Rules{
    73  		AcceptDivergentAmount: false,
    74  		MaxDaysToPayPastDue:   0,
    75  	}
    76  	return s
    77  }
    78  
    79  func (s *stubBoletoRequestCaixa) WithFlexRules() *stubBoletoRequestCaixa {
    80  	s.Title.Rules = &models.Rules{
    81  		AcceptDivergentAmount: true,
    82  		MaxDaysToPayPastDue:   60,
    83  	}
    84  	return s
    85  }