Skip to content

Commit

Permalink
Add tests for nil / empty cases
Browse files Browse the repository at this point in the history
  • Loading branch information
cavalle committed Feb 11, 2025
1 parent 34c7415 commit e58df8a
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 21 deletions.
3 changes: 3 additions & 0 deletions addons/pt/saft/invoices_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@ func TestInvoiceSeriesValidation(t *testing.T) {
code cbc.Code
err string
}{
// Nil case
{"", "", ""},

// Valid code and series
{"FT SERIES-A", "123", ""},
{"", "FT SERIES-A/123", ""},
Expand Down
48 changes: 29 additions & 19 deletions addons/pt/saft/pay_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,48 +79,58 @@ func TestPayInstructionsNormalization(t *testing.T) {
func TestPayAdvanceNormalization(t *testing.T) {
tests := []struct {
name string
key cbc.Key
ext tax.Extensions
adv *pay.Advance
out cbc.Code
}{
{
name: "nil",
},
{
name: "card, no ext",
key: pay.MeansKeyCard,
out: "CC",
adv: &pay.Advance{
Key: pay.MeansKeyCard,
},
out: "CC",
},
{
name: "card, ext",
key: pay.MeansKeyCard,
ext: tax.Extensions{
saft.ExtKeyPaymentMeans: "CB",
adv: &pay.Advance{
Key: pay.MeansKeyCard,
Ext: tax.Extensions{
saft.ExtKeyPaymentMeans: "CB",
},
},
out: "CC",
},
{
name: "other, no ext",
key: pay.MeansKeyOther,
out: "OU",
adv: &pay.Advance{
Key: pay.MeansKeyOther,
},
out: "OU",
},
{
name: "other, ext",
key: pay.MeansKeyOther,
ext: tax.Extensions{
saft.ExtKeyPaymentMeans: "CB",
adv: &pay.Advance{
Key: pay.MeansKeyOther,
Ext: tax.Extensions{
saft.ExtKeyPaymentMeans: "CB",
},
},
out: "CB",
},
}

addon := tax.AddonForKey(saft.V1)

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
a := &pay.Advance{
Key: test.key,
Ext: test.ext,
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
addon.Normalizer(tt.adv)
if tt.adv == nil {
// Nothing to check. Not panicking is enough.
return
}
addon.Normalizer(a)
assert.Equal(t, test.out, a.Ext[saft.ExtKeyPaymentMeans])
assert.Equal(t, tt.out, tt.adv.Ext[saft.ExtKeyPaymentMeans])
})
}
}
4 changes: 2 additions & 2 deletions addons/pt/saft/receipts.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,13 @@ func validateReceiptLine(val any) error {

return validation.ValidateStruct(rl,
validation.Field(&rl.Document,
validation.Required,
validation.By(validateLineDocument),
validation.Required,
validation.Skip,
),
validation.Field(&rl.Tax,
validation.Required,
validation.By(validateLineTax),
validation.Required,
validation.Skip,
),
validation.Field(&rl.Debit, num.Min(num.AmountZero)),
Expand Down
12 changes: 12 additions & 0 deletions addons/pt/saft/receipts_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@ func TestReceiptValidation(t *testing.T) {

rct.Supplier.TaxID = nil
assert.ErrorContains(t, addon.Validator(rct), "supplier: (tax_id: cannot be blank.")

rct.Supplier = nil
assert.NoError(t, addon.Validator(rct))
})

t.Run("missing customer name", func(t *testing.T) {
Expand All @@ -124,13 +127,19 @@ func TestReceiptValidation(t *testing.T) {

rct.Customer.TaxID = nil
assert.NoError(t, addon.Validator(rct))

rct.Customer = nil
assert.NoError(t, addon.Validator(rct))
})

t.Run("missing line document", func(t *testing.T) {
rct := validReceipt()
rct.Lines[0].Document = nil

assert.ErrorContains(t, addon.Validator(rct), "lines: (0: (document: cannot be blank")

rct.Lines[0] = nil
assert.NoError(t, addon.Validator(rct))
})

t.Run("missing line document issue date", func(t *testing.T) {
Expand All @@ -157,6 +166,9 @@ func TestReceiptValidation(t *testing.T) {
err := addon.Validator(rct)
assert.ErrorContains(t, err, "pt-region: required")
assert.ErrorContains(t, err, "pt-saft-tax-rate: required")

rct.Lines[0].Tax.Categories[0].Rates[0] = nil
assert.NoError(t, addon.Validator(rct))
})

t.Run("negative amounts", func(t *testing.T) {
Expand Down

0 comments on commit e58df8a

Please sign in to comment.