50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|