123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- package dao
- import (
- "context"
- "encoding/json"
- "go-common/app/service/bbq/topic/internal/model"
- "go-common/library/log"
- "math/rand"
- "testing"
- "github.com/smartystreets/goconvey/convey"
- )
- func TestDaoInsertTopicVideo(t *testing.T) {
- convey.Convey("InsertTopicVideo", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- svid = rand.Int63() % 1000000
- topicIDs = []int64{1}
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- rowsAffected, err := d.InsertTopicVideo(ctx, svid, topicIDs)
- convCtx.Convey("Then err should be nil.rowsAffected should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(rowsAffected, convey.ShouldEqual, 1)
- })
- })
- })
- }
- func TestDaoUpdateVideoScore(t *testing.T) {
- convey.Convey("UpdateVideoScore", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- svid = int64(1)
- score = float64(1.0)
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- err := d.UpdateVideoScore(ctx, svid, score)
- convCtx.Convey("Then err should be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- })
- })
- })
- }
- func TestDaoUpdateVideoState(t *testing.T) {
- convey.Convey("UpdateVideoState", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- svid = int64(1)
- state = int32(1)
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- err := d.UpdateVideoState(ctx, svid, state)
- convCtx.Convey("Then err should be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- })
- })
- })
- }
- func TestDaoListTopicVideos(t *testing.T) {
- convey.Convey("ListTopicVideos", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- topicID = int64(1)
- )
- res, hasMore, err := d.ListTopicVideos(ctx, topicID, "", "", model.TopicVideoSize)
- log.V(1).Infow(ctx, "res", res)
- convCtx.Convey("Then err should be nil.res,hasMore should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(hasMore, convey.ShouldNotBeNil)
- convCtx.So(res, convey.ShouldNotBeNil)
- })
- originStickList, _ := d.GetStickTopicVideo(ctx, topicID)
- newStickList := []int64{1, 2, 3, 4, 5, 6}
- d.SetStickTopicVideo(ctx, topicID, newStickList)
- var data []byte
- convCtx.Convey("cursor_in_rank && direction_next", func(convCtx convey.C) {
- data, _ = json.Marshal(model.CursorValue{Offset: 0, StickRank: 2})
- res, hasMore, err = d.ListTopicVideos(ctx, topicID, "", string(data), model.TopicVideoSize)
- log.V(1).Infow(ctx, "res", res, "has_more", hasMore)
- convCtx.So(res[0].Svid, convey.ShouldEqual, 3)
- convCtx.So(res[1].Svid, convey.ShouldEqual, 4)
- convCtx.So(res[2].Svid, convey.ShouldEqual, 5)
- convCtx.So(res[3].Svid, convey.ShouldEqual, 6)
- // 检验cursor值是否符合要求
- var unmarshalCursor model.CursorValue
- json.Unmarshal([]byte(res[3].CursorValue), &unmarshalCursor)
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(unmarshalCursor.StickRank, convey.ShouldEqual, 6)
- convCtx.So(unmarshalCursor.Offset, convey.ShouldEqual, 0)
- json.Unmarshal([]byte(res[4].CursorValue), &unmarshalCursor)
- convCtx.So(unmarshalCursor.StickRank, convey.ShouldEqual, 0)
- convCtx.So(unmarshalCursor.Offset, convey.ShouldEqual, 1)
- convCtx.So(len(res), convey.ShouldEqual, model.TopicVideoSize+4)
- convCtx.So(hasMore, convey.ShouldBeTrue)
- convCtx.So(res, convey.ShouldNotBeNil)
- })
- convCtx.Convey("cursor_in_rank && direction_prev", func(convCtx convey.C) {
- data, _ = json.Marshal(model.CursorValue{Offset: 0, StickRank: 4})
- res, hasMore, err = d.ListTopicVideos(ctx, topicID, string(data), "", model.TopicVideoSize)
- log.V(1).Infow(ctx, "res", res, "has_more", hasMore)
- convCtx.So(res[0].Svid, convey.ShouldEqual, 3)
- convCtx.So(res[1].Svid, convey.ShouldEqual, 2)
- convCtx.So(res[2].Svid, convey.ShouldEqual, 1)
- convCtx.So(len(res), convey.ShouldEqual, 3)
- convCtx.So(hasMore, convey.ShouldBeFalse)
- // 边缘情况,选择了rank=1的视频
- data, _ = json.Marshal(model.CursorValue{Offset: 0, StickRank: 1})
- res, hasMore, err = d.ListTopicVideos(ctx, topicID, string(data), "", model.TopicVideoSize)
- log.V(1).Infow(ctx, "res", res, "has_more", hasMore)
- convCtx.So(len(res), convey.ShouldEqual, 0)
- convCtx.So(hasMore, convey.ShouldBeFalse)
- })
- convCtx.Convey("direction_prev", func(convCtx convey.C) {
- data, _ = json.Marshal(model.CursorValue{Offset: 1, StickRank: 0})
- res, hasMore, err = d.ListTopicVideos(ctx, topicID, string(data), "", model.TopicVideoSize)
- log.V(1).Infow(ctx, "res", res, "has_more", hasMore)
- convCtx.So(len(res), convey.ShouldEqual, len(newStickList))
- convCtx.So(hasMore, convey.ShouldBeFalse)
- data, _ = json.Marshal(model.CursorValue{Offset: 5, StickRank: 0})
- res, hasMore, err = d.ListTopicVideos(ctx, topicID, string(data), "", model.TopicVideoSize)
- log.V(1).Infow(ctx, "res", res, "has_more", hasMore)
- // 检验cursor值是否符合要求
- var unmarshalCursor model.CursorValue
- json.Unmarshal([]byte(res[0].CursorValue), &unmarshalCursor)
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(unmarshalCursor.StickRank, convey.ShouldEqual, 0)
- convCtx.So(unmarshalCursor.Offset, convey.ShouldEqual, 4)
- json.Unmarshal([]byte(res[1].CursorValue), &unmarshalCursor)
- convCtx.So(unmarshalCursor.StickRank, convey.ShouldEqual, 0)
- convCtx.So(unmarshalCursor.Offset, convey.ShouldEqual, 3)
- })
- convCtx.Convey("direction_next", func(convCtx convey.C) {
- data, _ = json.Marshal(model.CursorValue{Offset: 1, StickRank: 0})
- res, hasMore, err = d.ListTopicVideos(ctx, topicID, "", string(data), model.TopicVideoSize)
- log.V(1).Infow(ctx, "res", res, "has_more", hasMore)
- convCtx.So(len(res), convey.ShouldEqual, int(model.TopicVideoSize))
- convCtx.So(hasMore, convey.ShouldBeTrue)
- data, _ = json.Marshal(model.CursorValue{Offset: 5, StickRank: 0})
- res, hasMore, err = d.ListTopicVideos(ctx, topicID, "", string(data), model.TopicVideoSize)
- log.V(1).Infow(ctx, "res", res, "has_more", hasMore)
- // 检验cursor值是否符合要求
- var unmarshalCursor model.CursorValue
- json.Unmarshal([]byte(res[0].CursorValue), &unmarshalCursor)
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(unmarshalCursor.StickRank, convey.ShouldEqual, 0)
- convCtx.So(unmarshalCursor.Offset, convey.ShouldEqual, 6)
- json.Unmarshal([]byte(res[1].CursorValue), &unmarshalCursor)
- convCtx.So(unmarshalCursor.StickRank, convey.ShouldEqual, 0)
- convCtx.So(unmarshalCursor.Offset, convey.ShouldEqual, 7)
- })
- // 恢复原来的置顶话题
- if len(originStickList) > 0 {
- d.SetStickTopicVideo(ctx, topicID, originStickList)
- }
- })
- }
- func TestDaogetStickTopicVideo(t *testing.T) {
- convey.Convey("GetStickTopicVideo", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- topicID = int64(1)
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- list, err := d.GetStickTopicVideo(ctx, topicID)
- log.V(1).Infow(ctx, "list", list)
- convCtx.Convey("Then err should be nil.list should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(list, convey.ShouldNotBeNil)
- })
- })
- })
- }
- func TestDaoStickTopicVideo(t *testing.T) {
- convey.Convey("StickTopicVideo", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- opTopicID = int64(1)
- opSvid = int64(1)
- op = int64(1)
- )
- originStickList, _ := d.GetStickTopicVideo(ctx, opTopicID)
- convCtx.Convey("common stick operate", func(convCtx convey.C) {
- err := d.StickTopicVideo(ctx, opTopicID, opSvid, op)
- newStickList, _ := d.GetStickTopicVideo(ctx, opTopicID)
- log.V(1).Infow(ctx, "new_stick_list", newStickList)
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(newStickList[0], convey.ShouldEqual, 1)
- })
- convCtx.Convey("common cancel stick operate", func(convCtx convey.C) {
- err := d.StickTopicVideo(ctx, opTopicID, opSvid, 0)
- newCancelStickList, _ := d.GetStickTopicVideo(ctx, opTopicID)
- log.V(1).Infow(ctx, "new_cancel_stick_list", newCancelStickList)
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(newCancelStickList[0], convey.ShouldNotEqual, 1)
- })
- convCtx.Convey("stick num test", func(convCtx convey.C) {
- for i := 1; i < model.MaxStickTopicVideoNum+3; i++ {
- d.StickTopicVideo(ctx, opTopicID, int64(i), 1)
- }
- list, _ := d.GetStickTopicVideo(ctx, opTopicID)
- log.V(1).Infow(ctx, "list", list)
- convCtx.So(len(list), convey.ShouldEqual, model.MaxStickTopicVideoNum)
- })
- // 恢复原来的置顶话题
- if len(originStickList) > 0 {
- d.SetStickTopicVideo(ctx, opTopicID, originStickList)
- }
- })
- }
- func TestDaoGetVideoTopic(t *testing.T) {
- convey.Convey("GetVideoTopic", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- svid = int64(1547635456050324977)
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- res, err := d.GetVideoTopic(ctx, svid)
- data, _ := json.Marshal(res)
- log.V(1).Infow(ctx, "res", string(data))
- convCtx.Convey("Then err should be nil.list should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(res, convey.ShouldNotBeNil)
- })
- })
- })
- }
|