123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package dao
- import (
- "fmt"
- . "github.com/smartystreets/goconvey/convey"
- "go-common/app/service/live/wallet/model"
- "testing"
- "time"
- )
- func TestDao_Tx1(t *testing.T) {
- Convey("commit wrong sample", t, func() {
- once.Do(startService)
- uid := int64(1)
- var wallet *model.Melonseed
- wallet, err := d.Melonseed(ctx, uid)
- t.Logf("uid gold : %d", wallet.Gold)
- og := wallet.Gold
- So(err, ShouldBeNil)
- So(1, ShouldEqual, 1)
- tx, err := d.db.Begin(ctx)
- So(err, ShouldBeNil)
- affect, err := d.AddGold(ctx, uid, 1)
- So(affect, ShouldBeGreaterThan, 0)
- So(err, ShouldBeNil)
- err = tx.Commit()
- So(err, ShouldBeNil)
- wallet, err = d.Melonseed(ctx, uid)
- t.Logf("uid gold : %d", wallet.Gold)
- So(err, ShouldBeNil)
- So(wallet.Gold-og, ShouldEqual, 1)
- })
- Convey("rollback wrong sample use db ins instead tx", t, func() {
- once.Do(startService)
- uid := int64(1)
- var wallet *model.Melonseed
- wallet, err := d.Melonseed(ctx, uid)
- t.Logf("uid gold : %d", wallet.Gold)
- og := wallet.Gold
- So(err, ShouldBeNil)
- So(1, ShouldEqual, 1)
- tx, err := d.db.Begin(ctx)
- So(err, ShouldBeNil)
- affect, err := d.AddGold(ctx, uid, 1)
- So(affect, ShouldBeGreaterThan, 0)
- So(err, ShouldBeNil)
- err = tx.Rollback()
- So(err, ShouldBeNil)
- wallet, err = d.Melonseed(ctx, uid)
- t.Logf("uid gold : %d", wallet.Gold)
- So(err, ShouldBeNil)
- So(wallet.Gold-og, ShouldEqual, 1)
- })
- Convey("commit", t, func() {
- once.Do(startService)
- uid := int64(1)
- var wallet *model.Melonseed
- wallet, err := d.Melonseed(ctx, uid)
- t.Logf("uid gold : %d", wallet.Gold)
- og := wallet.Gold
- So(err, ShouldBeNil)
- So(1, ShouldEqual, 1)
- tx, err := d.db.Begin(ctx)
- So(err, ShouldBeNil)
- res, err := tx.Exec(fmt.Sprintf("update user_wallet_%d set gold = gold + ? where uid = ?", uid%10), 1, uid)
- So(err, ShouldBeNil)
- affect, err := res.RowsAffected()
- So(affect, ShouldEqual, 1)
- So(err, ShouldBeNil)
- err = tx.Commit()
- So(err, ShouldBeNil)
- wallet, err = d.Melonseed(ctx, uid)
- t.Logf("uid gold : %d", wallet.Gold)
- So(err, ShouldBeNil)
- So(wallet.Gold-og, ShouldEqual, 1)
- })
- Convey("rollback", t, func() {
- once.Do(startService)
- uid := int64(1)
- var wallet *model.Melonseed
- wallet, err := d.Melonseed(ctx, uid)
- t.Logf("uid gold : %d", wallet.Gold)
- og := wallet.Gold
- So(err, ShouldBeNil)
- So(1, ShouldEqual, 1)
- tx, err := d.db.Begin(ctx)
- So(err, ShouldBeNil)
- res, err := tx.Exec(fmt.Sprintf("update user_wallet_%d set gold = gold + ? where uid = ?", uid%10), 1, uid)
- So(err, ShouldBeNil)
- affect, err := res.RowsAffected()
- So(affect, ShouldEqual, 1)
- So(err, ShouldBeNil)
- err = tx.Rollback()
- So(err, ShouldBeNil)
- wallet, err = d.Melonseed(ctx, uid)
- t.Logf("uid gold : %d", wallet.Gold)
- So(err, ShouldBeNil)
- So(wallet.Gold-og, ShouldEqual, 0)
- })
- }
- func TestDao_DoubleCoin(t *testing.T) {
- Convey("check1", t, func() {
- d := &model.DetailWithSnapShot{}
- So(model.NeedSnapshot(d, time.Now()), ShouldBeTrue)
- d.SnapShotTime = "2018-09-22 16:39:05"
- So(model.NeedSnapshot(d, time.Now()), ShouldBeTrue)
- now, _ := time.Parse("2006-01-02 15:04:05", "2018-09-22 16:39:04")
- t.Logf("today:%+v", now)
- So(model.NeedSnapshot(d, now), ShouldBeFalse)
- now = model.GetTodayTime(now)
- t.Logf("today:%+v", now)
- d.SnapShotTime = "2018-09-22 04:39:04"
- So(model.NeedSnapshot(d, now), ShouldBeFalse)
- d.SnapShotTime = "2018-09-21 04:39:04"
- So(model.NeedSnapshot(d, now), ShouldBeTrue)
- d.SnapShotTime = time.Now().Format("2006-01-02 15:04:05")
- t.Logf("today:%+v", d.SnapShotTime)
- So(model.TodayNeedSnapShot(d), ShouldBeFalse)
- d.SnapShotTime = time.Now().Add(-time.Second * 86400).Format("2006-01-02 15:04:05")
- t.Logf("today:%+v", d.SnapShotTime)
- So(model.TodayNeedSnapShot(d), ShouldBeTrue)
- })
- }
|