255 lines
6.8 KiB
Go
255 lines
6.8 KiB
Go
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"})
|
|
}
|