package model_test import ( "testing" "github.com/wangjia/pay/internal/model" ) func TestV2Migrate(t *testing.T) { db := model.OpenTestDB(t) o := model.OrderV2{ OutTradeNo: "PAY-1", MerchantID: 1, BizSystem: "pangolin", BizRef: "u-1", ProductID: 3, Subject: "pro-year", AmountMinor: 29990000, Currency: "USDT", Status: model.OrderPendingV2, } if err := db.Create(&o).Error; err != nil { t.Fatalf("create order: %v", err) } a := model.Attempt{ OutTradeNo: "PAY-1", Channel: "crypto", AccountID: "usdt-a1", ProviderRef: "P-9", RenderType: "crypto_address", AmountMinor: 29990000, Currency: "USDT", Status: model.AttemptPending, } if err := db.Create(&a).Error; err != nil { t.Fatalf("create attempt: %v", err) } var got model.OrderV2 if err := db.Where("out_trade_no = ?", "PAY-1").First(&got).Error; err != nil { t.Fatalf("read: %v", err) } if got.AmountMinor != 29990000 || got.Status != model.OrderPendingV2 { t.Fatalf("got %+v", got) } } func TestOrderStatusSettled(t *testing.T) { settled := []model.OrderStatusV2{model.OrderPaidV2, model.OrderRefundingV2, model.OrderPartRefundedV2, model.OrderRefundedV2} for _, s := range settled { if !s.Settled() { t.Fatalf("%s should be settled", s) } } for _, s := range []model.OrderStatusV2{model.OrderCreatedV2, model.OrderPendingV2, model.OrderCanceledV2, model.OrderExpiredV2} { if s.Settled() { t.Fatalf("%s should NOT be settled", s) } } }