go-common/app/interface/main/creative/dao/weeklyhonor/hbase_test.go

105 lines
2.4 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package weeklyhonor
import (
"bytes"
"context"
"encoding/binary"
"reflect"
"testing"
"go-common/library/database/hbase.v2"
"github.com/bouk/monkey"
"github.com/smartystreets/goconvey/convey"
"github.com/tsuna/gohbase/hrpc"
)
func TestWeeklyhonorreverseString(t *testing.T) {
convey.Convey("reverseString", t, func(ctx convey.C) {
var (
s = ""
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
p1 := reverseString(s)
ctx.Convey("Then p1 should not be nil.", func(ctx convey.C) {
ctx.So(p1, convey.ShouldNotBeNil)
})
})
})
}
func TestWeeklyhonorhonorRowKey(t *testing.T) {
convey.Convey("honorRowKey", t, func(ctx convey.C) {
var (
id = int64(0)
date = ""
)
ctx.Convey("When everything goes positive", func(ctx convey.C) {
p1 := honorRowKey(id, date)
ctx.Convey("Then p1 should not be nil.", func(ctx convey.C) {
ctx.So(p1, convey.ShouldNotBeNil)
})
})
})
}
func TestWeeklyhonorHonorStat(t *testing.T) {
var (
c = context.Background()
mid = int64(0)
date = "20181112"
val1 int32 = 500
val2 int32 = -2
cs = getMockCells(val1, val2)
)
guard := monkey.PatchInstanceMethod(reflect.TypeOf(d.hbase), "GetStr", func(_ *hbase.Client, _ context.Context, _, _ string, _ ...func(hrpc.Call) error) (*hrpc.Result, error) {
res := &hrpc.Result{
Cells: cs,
}
return res, nil
})
defer guard.Unpatch()
convey.Convey("honorStat", t, func() {
stat, err := d.HonorStat(c, mid, date)
convey.So(err, convey.ShouldBeNil)
convey.So(stat, convey.ShouldNotBeNil)
convey.So(stat.Play, convey.ShouldEqual, val1)
convey.So(stat.FansInc, convey.ShouldEqual, val2)
convey.So(stat.Rank0, convey.ShouldEqual, val1)
})
}
func getMockCells(v1, v2 int32) []*hrpc.Cell {
s1 := make([]byte, 0)
buf1 := bytes.NewBuffer(s1)
s2 := make([]byte, 0)
buf2 := bytes.NewBuffer(s2)
binary.Write(buf1, binary.BigEndian, v1)
binary.Write(buf2, binary.BigEndian, v2)
cells := []*hrpc.Cell{
{
Qualifier: []byte("play"),
Value: buf1.Bytes(),
Family: []byte("f"),
},
{
Qualifier: []byte("play_last_w"),
Value: buf1.Bytes(),
Family: []byte("f"),
},
{
Qualifier: []byte("fans_inc"),
Value: buf2.Bytes(),
Family: []byte("f"),
},
{
Qualifier: []byte("rank0"),
Value: buf1.Bytes(),
Family: []byte("r"),
},
}
return cells
}