package gateway_test import ( "testing" "github.com/glebarez/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" "github.com/wangjia/pay/internal/gateway" "github.com/wangjia/pay/internal/model" ) func TestDBProductResolver(t *testing.T) { db, err := gorm.Open(sqlite.Open("file:prodtest?mode=memory&cache=shared"), &gorm.Config{Logger: logger.Default.LogMode(logger.Silent), TranslateError: true}) if err != nil { t.Fatalf("open: %v", err) } if err := db.AutoMigrate(&model.Product{}); err != nil { t.Fatalf("migrate: %v", err) } db.Create(&model.Product{Name: "标准年付", Price: "299.00", BizCode: "annual_standard", Active: true}) r := gateway.NewDBProductResolver(db, "CNY") minor, cur, subject, bizCode, err := r.Resolve("annual_standard") if err != nil || minor != 29900 || cur != "CNY" || subject != "标准年付" || bizCode != "annual_standard" { t.Fatalf("resolve = %d %s %s %s %v", minor, cur, subject, bizCode, err) } if _, _, _, _, err := r.Resolve("ghost"); err != gateway.ErrProductNotFound { t.Fatalf("缺套餐应 ErrProductNotFound, got %v", err) } }