feat(v2): Order/Attempt/Account/Refund 模型 + 状态枚举 + :memory: 测试约定
v2 OrderStatus 三个值(Pending/Paid/Refunded)与 v1 model.OrderStatus 撞名, 统一加 V2 后缀(OrderPendingV2 等)规避包内重名;AttemptStatus/RefundStatus 无此冲突,原样保留。
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user