103 lines
2.9 KiB
Go
103 lines
2.9 KiB
Go
|
package dao
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/smartystreets/goconvey/convey"
|
||
|
|
||
|
"go-common/app/service/live/dao-anchor/api/grpc/v1"
|
||
|
"go-common/app/service/live/dao-anchor/model"
|
||
|
)
|
||
|
|
||
|
func TestDaoNormalizeRoomIDs(t *testing.T) {
|
||
|
var (
|
||
|
c = context.TODO()
|
||
|
inputIDs = []int64{5910, 5901, 63, 53, 5010, 115, 666}
|
||
|
turnedFlags = []bool{false, false, true, true, false, true, true}
|
||
|
)
|
||
|
|
||
|
convey.Convey("When normalize a given list of ids", t, func(ctx convey.C) {
|
||
|
normalized, err := d.dbNormalizeRoomIDs(c, inputIDs)
|
||
|
ctx.Convey("Then short-id is turned into room-id while room-id keeps untouched", func(ctx convey.C) {
|
||
|
ctx.So(err, convey.ShouldBeNil)
|
||
|
ctx.So(len(normalized), convey.ShouldEqual, len(inputIDs))
|
||
|
for i, turned := range turnedFlags {
|
||
|
if turned {
|
||
|
ctx.So(normalized[i] > inputIDs[i], convey.ShouldBeTrue)
|
||
|
} else {
|
||
|
ctx.So(normalized[i] == inputIDs[i], convey.ShouldBeTrue)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ctx.So(d.shortIDMapping.caches[0].Len(), convey.ShouldEqual, len(inputIDs))
|
||
|
})
|
||
|
|
||
|
ctx.Convey("Then order of result will be preserved", func(ctx convey.C) {
|
||
|
roomIds := []int64{5901, 57796, 5010, 1011}
|
||
|
results, err := d.dbNormalizeRoomIDs(c, roomIds)
|
||
|
ctx.So(err, convey.ShouldBeNil)
|
||
|
for i := range results {
|
||
|
ctx.So(roomIds[i], convey.ShouldEqual, results[i])
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDaoFetchAreas(t *testing.T) {
|
||
|
var (
|
||
|
c = context.TODO()
|
||
|
)
|
||
|
|
||
|
convey.Convey("When given a valid main area id", t, func(ctx convey.C) {
|
||
|
req := &v1.FetchAreasReq{
|
||
|
AreaId: 3,
|
||
|
}
|
||
|
resp, err := d.fetchAreas(c, req)
|
||
|
ctx.Convey("Then we will get a list of its subarea's info along with its info", func(ctx convey.C) {
|
||
|
ctx.So(err, convey.ShouldBeNil)
|
||
|
ctx.So(resp.Info.AreaId, convey.ShouldEqual, req.AreaId)
|
||
|
ctx.So(resp.Info.AreaName, convey.ShouldNotBeEmpty)
|
||
|
ctx.So(resp.Areas, convey.ShouldNotBeEmpty)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
convey.Convey("When given a non-existed main area id", t, func(ctx convey.C) {
|
||
|
req := &v1.FetchAreasReq{
|
||
|
AreaId: 999,
|
||
|
}
|
||
|
_, err := d.fetchAreas(c, req)
|
||
|
ctx.Convey("Then we will get nothing", func(ctx convey.C) {
|
||
|
ctx.So(err, convey.ShouldNotBeNil)
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDaoFetchAnchorInfo(t *testing.T) {
|
||
|
var (
|
||
|
c = context.TODO()
|
||
|
)
|
||
|
|
||
|
convey.Convey("When to fetch anchor info for a given uid", t, func(ctx convey.C) {
|
||
|
uid := []int64{2}
|
||
|
const RoomID = 1024
|
||
|
resp := make(map[int64]*v1.RoomData)
|
||
|
err := d.dbFetchAnchorInfo(c, uid, resp, false)
|
||
|
ctx.Convey("Then we will get room data for the anchor", func(ctx convey.C) {
|
||
|
ctx.So(err, convey.ShouldBeNil)
|
||
|
ctx.So(resp, convey.ShouldNotBeEmpty)
|
||
|
|
||
|
data, ok := resp[RoomID]
|
||
|
|
||
|
ctx.So(ok, convey.ShouldBeTrue)
|
||
|
|
||
|
alv := data.AnchorLevel
|
||
|
ctx.So(alv.MaxLevel, convey.ShouldEqual, model.MaxAnchorLevel)
|
||
|
ctx.So(alv.Level, convey.ShouldEqual, 1)
|
||
|
ctx.So(alv.Color, convey.ShouldEqual, 0)
|
||
|
ctx.So(alv.Left, convey.ShouldEqual, 0)
|
||
|
ctx.So(alv.Right, convey.ShouldEqual, 49)
|
||
|
})
|
||
|
})
|
||
|
}
|