Files
sxchnge/backend/pkg/model/card_test.go
T

69 lines
1.7 KiB
Go

package model
import (
"testing"
"go.mongodb.org/mongo-driver/v2/bson"
)
func TestPaymentMethodAsCardReadsStoredSnakeCaseExpiry(t *testing.T) {
data, err := bson.Marshal(bson.M{
"pan": "2200001100000001",
"firstName": "S",
"lastName": "S",
"exp_month": 12.0,
"exp_year": 2031.0,
"country": nil,
})
if err != nil {
t.Fatalf("marshal card data: %v", err)
}
card, err := (&PaymentMethod{
Type: PaymentTypeCard,
Data: data,
}).AsCard()
if err != nil {
t.Fatalf("AsCard returned error: %v", err)
}
if got, want := card.ExpMonth, 12; got == nil || *got != want {
t.Fatalf("exp_month mismatch: got=%v want=%d", got, want)
}
if got, want := card.ExpYear, 2031; got == nil || *got != want {
t.Fatalf("exp_year mismatch: got=%v want=%d", got, want)
}
}
func TestCardPaymentDataMarshalUsesStoredSnakeCaseExpiry(t *testing.T) {
expMonth := 12
expYear := 2031
raw, err := bson.Marshal(CardPaymentData{
Pan: "2200001100000001",
FirstName: "S",
LastName: "S",
ExpMonth: &expMonth,
ExpYear: &expYear,
})
if err != nil {
t.Fatalf("marshal card data: %v", err)
}
var data bson.M
if err := bson.Unmarshal(raw, &data); err != nil {
t.Fatalf("unmarshal card data: %v", err)
}
if got, want := paymentDataInt(data["exp_month"]), 12; got == nil || *got != want {
t.Fatalf("stored exp_month mismatch: got=%v want=%d", got, want)
}
if got, want := paymentDataInt(data["exp_year"]), 2031; got == nil || *got != want {
t.Fatalf("stored exp_year mismatch: got=%v want=%d", got, want)
}
if _, ok := data["expMonth"]; ok {
t.Fatalf("card data must not store camelCase expMonth: %#v", data)
}
if _, ok := data["expYear"]; ok {
t.Fatalf("card data must not store camelCase expYear: %#v", data)
}
}