You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
283 lines
7.4 KiB
283 lines
7.4 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"os" |
|
"sync" |
|
"testing" |
|
"time" |
|
|
|
"go-common/app/service/live/wallet/conf" |
|
"go-common/library/log" |
|
|
|
. "github.com/smartystreets/goconvey/convey" |
|
"go-common/app/service/live/wallet/model" |
|
"math/rand" |
|
) |
|
|
|
var ( |
|
once sync.Once |
|
d *Dao |
|
ctx = context.Background() |
|
testUID int64 |
|
r *rand.Rand |
|
) |
|
|
|
func initConf() { |
|
if err := conf.Init(); err != nil { |
|
panic(err) |
|
} |
|
log.Init(conf.Conf.Log) |
|
defer log.Close() |
|
} |
|
|
|
func TestMain(m *testing.M) { |
|
conf.ConfPath = "../cmd/live-wallet-test.toml" |
|
once.Do(startService) |
|
os.Exit(m.Run()) |
|
} |
|
|
|
func startService() { |
|
initConf() |
|
d = New(conf.Conf) |
|
r = rand.New(rand.NewSource(time.Now().UnixNano())) |
|
testUID = r.Int63n(100000000) |
|
log.Info("test uid:%ld", testUID) |
|
time.Sleep(time.Second * 1) |
|
} |
|
|
|
func TestInitWallet(t *testing.T) { |
|
Convey("Init Wallet", t, func() { |
|
once.Do(startService) |
|
_, err := d.InitWallet(ctx, testUID, 0, 0, 0) |
|
So(err, ShouldBeNil) |
|
}) |
|
} |
|
|
|
func TestMelonseed(t *testing.T) { |
|
Convey("Melon seed", t, func() { |
|
once.Do(startService) |
|
var wallet *model.Melonseed |
|
wallet, err := d.Melonseed(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
So(wallet.Gold, ShouldEqual, 0) |
|
}) |
|
} |
|
|
|
func TestDetail(t *testing.T) { |
|
Convey("Detail", t, func() { |
|
once.Do(startService) |
|
var detail *model.Detail |
|
detail, err := d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
So(detail.Gold, ShouldEqual, 0) |
|
So(detail.Silver, ShouldEqual, 0) |
|
So(detail.SilverPayCnt, ShouldEqual, 0) |
|
So(detail.IapGold, ShouldEqual, 0) |
|
So(detail.GoldRechargeCnt, ShouldEqual, 0) |
|
So(detail.GoldPayCnt, ShouldEqual, 0) |
|
|
|
}) |
|
} |
|
|
|
func TestDao_AddGold(t *testing.T) { |
|
Convey("Add Gold", t, func() { |
|
once.Do(startService) |
|
var testUID = r.Int63n(100000000) |
|
var odetail *model.Detail |
|
odetail, err := d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
num := 1000 |
|
affect, err := d.AddGold(ctx, testUID, num) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldBeGreaterThanOrEqualTo, 1) // 插入affect=1 更新affect=2 |
|
|
|
var ndetail *model.Detail |
|
ndetail, err = d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
So(ndetail.Gold-odetail.Gold, ShouldEqual, num) |
|
So(ndetail.GoldRechargeCnt, ShouldEqual, odetail.GoldRechargeCnt) |
|
}) |
|
} |
|
func TestDao_RechargeGold(t *testing.T) { |
|
Convey("recharge gold", t, func() { |
|
once.Do(startService) |
|
var testUID = r.Int63n(100000000) |
|
var odetail *model.Detail |
|
odetail, err := d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
num := 1000 |
|
affect, err := d.RechargeGold(ctx, testUID, num) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldBeGreaterThanOrEqualTo, 1) // 插入affect=1 更新affect=2 |
|
|
|
var ndetail *model.Detail |
|
ndetail, err = d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
So(ndetail.Gold-odetail.Gold, ShouldEqual, num) |
|
So(ndetail.IapGold-odetail.IapGold, ShouldEqual, 0) |
|
So(ndetail.GoldRechargeCnt-odetail.GoldRechargeCnt, ShouldEqual, num) |
|
}) |
|
} |
|
|
|
func TestDao_RechargeIapGold(t *testing.T) { |
|
Convey("recharge iap gold", t, func() { |
|
once.Do(startService) |
|
var testUID = r.Int63n(100000000) |
|
var odetail *model.Detail |
|
odetail, err := d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
num := 1000 |
|
affect, err := d.RechargeIapGold(ctx, testUID, num) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldBeGreaterThanOrEqualTo, 1) // 插入affect=1 更新affect=2 |
|
|
|
var ndetail *model.Detail |
|
ndetail, err = d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
So(ndetail.Gold-odetail.Gold, ShouldEqual, 0) |
|
So(ndetail.IapGold-odetail.IapGold, ShouldEqual, num) |
|
So(ndetail.GoldRechargeCnt-odetail.GoldRechargeCnt, ShouldEqual, num) |
|
}) |
|
} |
|
|
|
func TestDao_AddIapGold(t *testing.T) { |
|
Convey("Add iap Gold", t, func() { |
|
once.Do(startService) |
|
var testUID = r.Int63n(100000000) |
|
var odetail *model.Detail |
|
odetail, err := d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
num := 1000 |
|
affect, err := d.AddIapGold(ctx, testUID, num) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldBeGreaterThanOrEqualTo, 1) // 插入affect=1 更新affect=2 |
|
|
|
var ndetail *model.Detail |
|
ndetail, err = d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
So(ndetail.Gold-odetail.Gold, ShouldEqual, 0) |
|
So(ndetail.IapGold-odetail.IapGold, ShouldEqual, num) |
|
So(ndetail.GoldRechargeCnt, ShouldEqual, odetail.GoldRechargeCnt) |
|
}) |
|
} |
|
|
|
func TestDao_AddSilver(t *testing.T) { |
|
Convey("Add silver", t, func() { |
|
once.Do(startService) |
|
var testUID = r.Int63n(100000000) |
|
var odetail *model.Detail |
|
odetail, err := d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
num := 1000 |
|
affect, err := d.AddSilver(ctx, testUID, num) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldBeGreaterThanOrEqualTo, 1) // 插入affect=1 更新affect=2 |
|
|
|
var ndetail *model.Detail |
|
ndetail, err = d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
So(ndetail.Gold-odetail.Gold, ShouldEqual, 0) |
|
So(ndetail.IapGold-odetail.IapGold, ShouldEqual, 0) |
|
So(ndetail.Silver-odetail.Silver, ShouldEqual, num) |
|
}) |
|
} |
|
|
|
func TestDao_ConsumeGold(t *testing.T) { |
|
Convey("Consume Gold", t, func() { |
|
once.Do(startService) |
|
var testUID = r.Int63n(100000000) |
|
var odetail *model.Detail |
|
odetail, err := d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
num := 1000 |
|
affect, err := d.RechargeGold(ctx, testUID, num) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldBeGreaterThanOrEqualTo, 1) // 插入affect=1 更新affect=2 |
|
|
|
pay := 500 |
|
affect, err = d.ConsumeGold(ctx, testUID, pay) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldEqual, 1) |
|
|
|
var ndetail *model.Detail |
|
ndetail, err = d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
So(ndetail.Gold-odetail.Gold, ShouldEqual, num-pay) |
|
So(ndetail.IapGold-odetail.IapGold, ShouldEqual, 0) |
|
So(ndetail.GoldRechargeCnt-odetail.GoldRechargeCnt, ShouldEqual, num) |
|
So(ndetail.GoldPayCnt-odetail.GoldPayCnt, ShouldEqual, pay) |
|
}) |
|
} |
|
|
|
func TestDao_ConsumeIapGold(t *testing.T) { |
|
Convey("Consume Iap Gold", t, func() { |
|
once.Do(startService) |
|
var testUID = r.Int63n(100000000) |
|
var odetail *model.Detail |
|
odetail, err := d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
num := 1000 |
|
affect, err := d.RechargeIapGold(ctx, testUID, num) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldBeGreaterThanOrEqualTo, 1) // 插入affect=1 更新affect=2 |
|
|
|
pay := 500 |
|
affect, err = d.ConsumeIapGold(ctx, testUID, pay) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldEqual, 1) |
|
|
|
var ndetail *model.Detail |
|
ndetail, err = d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
So(ndetail.IapGold-odetail.IapGold, ShouldEqual, num-pay) |
|
So(ndetail.Gold-odetail.Gold, ShouldEqual, 0) |
|
So(ndetail.GoldRechargeCnt-odetail.GoldRechargeCnt, ShouldEqual, num) |
|
So(ndetail.GoldPayCnt-odetail.GoldPayCnt, ShouldEqual, pay) |
|
}) |
|
} |
|
|
|
func TestDao_ConsumeSilver(t *testing.T) { |
|
Convey("Consume Silver", t, func() { |
|
once.Do(startService) |
|
var testUID = r.Int63n(100000000) |
|
var odetail *model.Detail |
|
odetail, err := d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
num := 1000 |
|
affect, err := d.AddSilver(ctx, testUID, num) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldBeGreaterThanOrEqualTo, 1) // 插入affect=1 更新affect=2 |
|
|
|
pay := 500 |
|
affect, err = d.ConsumeSilver(ctx, testUID, pay) |
|
So(err, ShouldBeNil) |
|
So(affect, ShouldEqual, 1) |
|
|
|
var ndetail *model.Detail |
|
ndetail, err = d.Detail(ctx, testUID) |
|
So(err, ShouldBeNil) |
|
|
|
So(ndetail.IapGold-odetail.IapGold, ShouldEqual, 0) |
|
So(ndetail.Gold-odetail.Gold, ShouldEqual, 0) |
|
So(ndetail.Silver-odetail.Silver, ShouldEqual, num-pay) |
|
So(ndetail.GoldRechargeCnt-odetail.GoldRechargeCnt, ShouldEqual, 0) |
|
So(ndetail.GoldPayCnt-odetail.GoldPayCnt, ShouldEqual, 0) |
|
So(ndetail.SilverPayCnt-odetail.SilverPayCnt, ShouldEqual, pay) |
|
}) |
|
}
|
|
|