123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- package dao
- import (
- "context"
- "fmt"
- "net"
- "strings"
- "testing"
- "time"
- "go-common/app/service/openplatform/ticket-sales/api/grpc/type"
- "go-common/app/service/openplatform/ticket-sales/model"
- "go-common/app/service/openplatform/ticket-sales/model/consts"
- "github.com/smartystreets/goconvey/convey"
- )
- var (
- oids []int64
- )
- func TestTxInsertOrders(t *testing.T) {
- convey.Convey("OrderID", t, func() {
- oids, _ = d.OrderID(context.TODO(), 3)
- convey.So(len(oids), convey.ShouldEqual, 3)
- })
- convey.Convey("TxInsertOrders", t, func() {
- o1 := &model.OrderMain{
- OrderID: oids[0],
- UID: "TEST",
- OrderType: 1,
- ItemID: 1,
- ItemInfo: &_type.OrderItemInfo{
- Name: "TEST",
- Img: "//img.bilibili.com",
- ScreenID: 1,
- ScreenName: "TEST",
- ScreenType: 1,
- DeliverType: 1,
- ExpressFee: 1,
- VIPExpressFree: 1,
- VerID: 1,
- },
- Count: 1,
- TotalMoney: 2,
- ExpressFee: 1,
- PayMoney: 2,
- PayChannel: 1,
- PayTime: time.Now().Unix(),
- Source: "TEST",
- Status: 1,
- SubStatus: 1,
- RefundStatus: 1,
- }
- tx, _ := d.BeginTx(context.TODO())
- c, _ := d.TxInsertOrders(tx, []*model.OrderMain{o1})
- convey.So(c, convey.ShouldEqual, 1)
- o2, o3 := &model.OrderMain{}, &model.OrderMain{}
- *o2 = *o1
- o2.OrderID = oids[1]
- o2.ItemID = 2
- *o3 = *o1
- o3.OrderID = oids[2]
- o3.ItemID = 2
- o3.RefundStatus = consts.RefundStatusPtRefunded
- c, _ = d.TxInsertOrders(tx, []*model.OrderMain{o2, o3})
- convey.So(c, convey.ShouldEqual, 2)
- tx.Commit()
- })
- }
- func TestOrders(t *testing.T) {
- convey.Convey("UserOrders", t, func() {
- orders, _ := d.CacheOrders(context.TODO(), &model.OrderMainQuerier{UID: "TEST", OrderID: oids[:1]})
- convey.So(len(orders), convey.ShouldEqual, 0)
- orders, _ = d.Orders(context.TODO(), &model.OrderMainQuerier{UID: "TEST"})
- convey.So(len(orders), convey.ShouldEqual, 3)
- for i := 0; i < 10; i++ {
- orders, _ = d.CacheOrders(context.TODO(), &model.OrderMainQuerier{UID: "TEST"})
- if len(orders) > 0 {
- break
- }
- time.Sleep(100 * time.Millisecond)
- }
- convey.So(len(orders), convey.ShouldEqual, 3)
- for i := 0; i < 10; i++ {
- orders, _ = d.CacheOrders(context.TODO(), &model.OrderMainQuerier{UID: "TEST", OrderID: oids[1:2]})
- if len(orders) > 0 {
- break
- }
- time.Sleep(100 * time.Millisecond)
- }
- convey.So(len(orders), convey.ShouldEqual, 1)
- orders, _ = d.Orders(context.TODO(), &model.OrderMainQuerier{UID: "TEST", ItemID: 2, Status: []int16{1}})
- convey.So(len(orders), convey.ShouldEqual, 2)
- })
- }
- func TestOrderCount(t *testing.T) {
- convey.Convey("OrderCount", t, func() {
- cnt, _ := d.CacheOrderCount(context.TODO(), &model.OrderMainQuerier{UID: "TEST"})
- convey.So(cnt, convey.ShouldEqual, 0)
- cnt, _ = d.OrderCount(context.TODO(), &model.OrderMainQuerier{UID: "TEST"})
- convey.So(cnt, convey.ShouldEqual, 3)
- for i := 0; i < 10; i++ {
- cnt, _ = d.CacheOrderCount(context.TODO(), &model.OrderMainQuerier{UID: "TEST"})
- if cnt > 0 {
- break
- }
- time.Sleep(100 * time.Millisecond)
- }
- convey.So(cnt, convey.ShouldEqual, 3)
- })
- }
- func TestTxInsertOrderDetails(t *testing.T) {
- convey.Convey("TxInsertOrderDetails", t, func() {
- dt1 := &model.OrderDetail{
- OrderID: oids[0],
- Buyer: "TEST",
- Tel: "13800138000",
- PersonalID: "342921",
- ExpressCO: "shunfeng",
- ExpressNO: "000",
- Remark: "TEST",
- DeviceType: 1,
- IP: net.ParseIP("127.0.0.1"),
- DeliverDetail: &_type.OrderDeliver{
- AddrID: 1,
- Name: "张三",
- Tel: "13810559189",
- Addr: "北京市",
- },
- Detail: &_type.OrderExtra{
- AutoRecvTime: time.Now().Unix(),
- DelayRecvTimes: 1,
- },
- }
- dt2 := &model.OrderDetail{}
- *dt2 = *dt1
- dt2.OrderID = oids[1]
- tx, _ := d.BeginTx(context.TODO())
- c, _ := d.TxInsertOrderDetails(tx, []*model.OrderDetail{dt1, dt2})
- tx.Commit()
- convey.So(c, convey.ShouldEqual, 2)
- })
- }
- func TestOrderDetails(t *testing.T) {
- convey.Convey("OrderDetails", t, func() {
- dts, _ := d.CacheOrderDetails(context.TODO(), oids)
- convey.So(len(dts), convey.ShouldEqual, 0)
- dts, _ = d.OrderDetails(context.TODO(), oids)
- convey.So(len(dts), convey.ShouldEqual, 2)
- for i := 0; i < 10; i++ {
- dts, _ = d.CacheOrderDetails(context.TODO(), oids)
- if len(dts) > 0 {
- break
- }
- time.Sleep(100 * time.Millisecond)
- }
- convey.So(len(dts), convey.ShouldEqual, 3)
- dts, _ = d.OrderDetails(context.TODO(), oids)
- convey.So(len(dts), convey.ShouldEqual, 2)
- })
- }
- func TestTxInsertOrderSKUs(t *testing.T) {
- convey.Convey("TxInsertOrderSKUs", t, func() {
- sku1 := &model.OrderSKU{
- OrderID: oids[0],
- SKUID: 1,
- Count: 1,
- OriginPrice: 1,
- Price: 1,
- TicketType: 1,
- Discounts: &_type.OrderSKUDiscounts{
- Platform: map[int32]int64{1: 1},
- },
- }
- sku2 := &model.OrderSKU{
- OrderID: oids[0],
- SKUID: 2,
- Count: 1,
- OriginPrice: 2,
- Price: 2,
- TicketType: 1,
- }
- tx, _ := d.BeginTx(context.TODO())
- cnt, _ := d.TxInsertOrderSKUs(tx, []*model.OrderSKU{sku1, sku2})
- tx.Commit()
- convey.So(cnt, convey.ShouldEqual, 2)
- })
- }
- func TestOrderSKUs(t *testing.T) {
- convey.Convey("OrderSKUs", t, func() {
- skus, _ := d.CacheOrderSKUs(context.TODO(), oids)
- convey.So(len(skus), convey.ShouldEqual, 0)
- skus, _ = d.OrderSKUs(context.TODO(), oids)
- convey.So(len(skus), convey.ShouldEqual, 1)
- for i := 0; i < 10; i++ {
- skus, _ = d.CacheOrderSKUs(context.TODO(), oids)
- if len(skus) > 0 {
- break
- }
- time.Sleep(100 * time.Millisecond)
- }
- convey.So(len(skus), convey.ShouldEqual, 3)
- skus, _ = d.OrderSKUs(context.TODO(), oids)
- convey.So(len(skus), convey.ShouldEqual, 1)
- })
- }
- func TestOrderPayCharges(t *testing.T) {
- convey.Convey("OrderPayCharges", t, func() {
- var oid int64 = 1519626683221383
- chs, _ := d.OrderPayCharges(context.TODO(), []int64{oid})
- convey.So(chs, convey.ShouldContainKey, oid)
- })
- }
- func TestGetBoughtCount(t *testing.T) {
- convey.Convey("GetBoughtCount", t, func() {
- c, _ := d.RawBoughtCount(context.TODO(), "TEST", 2, nil)
- convey.So(c, convey.ShouldEqual, 2)
- c, _ = d.RawBoughtCount(context.TODO(), "TEST", 1, []int64{1})
- convey.So(c, convey.ShouldEqual, 1)
- })
- }
- //删除测试数据
- func TestDelOrders(t *testing.T) {
- tx, _ := d.BeginTx(ctx)
- tables := []string{"order_main", "order_detail", "order_sku", "order_pay_charge", "ticket"}
- w := strings.Repeat(",?", len(oids))[1:]
- a := make([]interface{}, len(oids))
- for k, v := range oids {
- a[k] = v
- }
- for _, t := range tables {
- f := "order_id"
- if t == "ticket" {
- f = "oid"
- }
- _, err := tx.Exec(fmt.Sprintf("DELETE FROM `%s` WHERE %s IN (%s)", t, f, w), a...)
- if err != nil {
- tx.Rollback()
- return
- }
- }
- tx.Commit()
- d.DelCacheOrders(context.TODO(), &model.OrderMainQuerier{UID: "TEST"})
- }
|