123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- package dao
- import (
- "context"
- "fmt"
- "go-common/app/service/bbq/topic/api"
- "go-common/app/service/bbq/topic/internal/model"
- "go-common/library/ecode"
- "go-common/library/log"
- "math/rand"
- "testing"
- "github.com/smartystreets/goconvey/convey"
- )
- func TestDaoRawTopicInfo(t *testing.T) {
- convey.Convey("RawTopicInfo", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- topicIDs = []int64{1}
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- res, err := d.RawTopicInfo(ctx, topicIDs)
- log.Infow(ctx, "topics", res)
- convCtx.Convey("Then err should be nil.res should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(res, convey.ShouldNotBeNil)
- })
- })
- })
- }
- func TestDaoCacheTopicInfo(t *testing.T) {
- convey.Convey("CacheTopicInfo", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- topicIDs = []int64{1}
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- res, err := d.CacheTopicInfo(ctx, topicIDs)
- log.Infow(ctx, "res", res)
- convCtx.Convey("Then err should be nil.res should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(res, convey.ShouldNotBeNil)
- })
- })
- })
- }
- func TestDaoAddCacheTopicInfo(t *testing.T) {
- convey.Convey("AddCacheTopicInfo", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- topicInfos map[int64]*api.TopicInfo
- )
- topicInfos = make(map[int64]*api.TopicInfo)
- topicInfos[1] = &api.TopicInfo{TopicId: 1, Name: "Test", State: 0, Desc: "test for tester"}
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- err := d.AddCacheTopicInfo(ctx, topicInfos)
- convCtx.Convey("Then err should be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- })
- })
- })
- }
- func TestDaoDelCacheTopicInfo(t *testing.T) {
- convey.Convey("DelCacheTopicInfo", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- topicID = int64(1)
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- d.DelCacheTopicInfo(ctx, topicID)
- res, _ := d.CacheTopicInfo(ctx, []int64{topicID})
- topicInfo := res[topicID]
- convCtx.Convey("No return values", func(convCtx convey.C) {
- convCtx.So(topicInfo, convey.ShouldBeNil)
- })
- })
- })
- }
- func TestDaoInsertTopics(t *testing.T) {
- convey.Convey("InsertTopics", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- topics map[string]*api.TopicInfo
- )
- topics = make(map[string]*api.TopicInfo)
- //topicName := fmt.Sprintf("test_%d", rand.Int()%10000000)
- topicName := "Test"
- topics[topicName] = &api.TopicInfo{Name: topicName, Score: float64(rand.Int()%10000) / float64(10000)}
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- _, err := d.InsertTopics(ctx, topics)
- convCtx.Convey("Then err should be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- })
- })
- log.Infow(ctx, "log", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:"+topicName)
- topicName = fmt.Sprintf("test_%d", rand.Int()%10000000)
- topics[topicName] = &api.TopicInfo{Name: topicName, Score: float64(rand.Int()%10000) / float64(10000)}
- topicName = fmt.Sprintf("test_%d", rand.Int()%10000000)
- topics[topicName] = &api.TopicInfo{Name: topicName, Score: float64(rand.Int()%10000) / float64(10000)}
- convCtx.Convey("multi insert", func(convCtx convey.C) {
- _, err := d.InsertTopics(ctx, topics)
- convCtx.Convey("Then err should be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- })
- })
- longTopics := make(map[string]*api.TopicInfo)
- longName := "test_toolonggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"
- longTopics[longName] = &api.TopicInfo{Name: longName}
- convCtx.Convey("error case", func(convCtx convey.C) {
- _, duplicateErr := d.InsertTopics(ctx, longTopics)
- convCtx.Convey("Then err should not be nil.", func(convCtx convey.C) {
- convCtx.So(duplicateErr, convey.ShouldAlmostEqual, ecode.TopicNameLenErr)
- })
- })
- })
- }
- func TestDaoTopicID(t *testing.T) {
- convey.Convey("TopicID", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- names = []string{"Test"}
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- topics, err := d.TopicID(ctx, names)
- log.Infow(ctx, "names", names, "topics", topics)
- convCtx.Convey("Then err should be nil.topics should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(topics, convey.ShouldNotBeNil)
- })
- })
- })
- }
- func TestDaoUpdateTopic(t *testing.T) {
- convey.Convey("TopicID", t, func(convCtx convey.C) {
- convCtx.Convey("update desc", func(convCtx convey.C) {
- var (
- ctx = context.Background()
- topicID = int64(1)
- field = "desc"
- value = "update_desc"
- )
- origin, _ := d.TopicInfo(ctx, []int64{topicID})
- originTopic := origin[topicID]
- err := d.UpdateTopic(ctx, topicID, field, value)
- curr, _ := d.TopicInfo(ctx, []int64{topicID})
- currTopic := curr[topicID]
- d.UpdateTopic(ctx, topicID, field, originTopic.Desc)
- convCtx.Convey("Then err should be nil.topics should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(currTopic.Desc, convey.ShouldEqual, value)
- })
- })
- convCtx.Convey("update state", func(convCtx convey.C) {
- var (
- ctx = context.Background()
- topicID = int64(1)
- field = "state"
- value = model.TopicStateUnavailable
- )
- err := d.UpdateTopic(ctx, topicID, field, value)
- curr, _ := d.TopicInfo(ctx, []int64{topicID})
- currTopic := curr[topicID]
- d.UpdateTopic(ctx, topicID, field, model.TopicStateAvailable)
- convCtx.Convey("Then err should be nil.topics should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(currTopic.State, convey.ShouldEqual, value)
- })
- })
- })
- }
- func TestDaoListUnAvailableTopics(t *testing.T) {
- convey.Convey("ListUnAvailableTopics", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- page = int32(1)
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- list, hasMore, err := d.ListUnAvailableTopics(ctx, page, model.CmsTopicSize)
- log.Infow(ctx, "list", list, "has_more", hasMore)
- convCtx.Convey("Then err should be nil.list,hasMore should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(list, convey.ShouldNotBeNil)
- })
- })
- })
- }
- func TestDaoListRankTopics(t *testing.T) {
- convey.Convey("ListRankTopics", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- page = int32(1)
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- list, hasMore, err := d.ListRankTopics(ctx, page, model.DiscoveryTopicSize)
- log.Infow(ctx, "list", list, "topics", hasMore)
- convCtx.Convey("Then err should be nil.list,hasMore should not be nil.", func(convCtx convey.C) {
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(hasMore, convey.ShouldBeTrue)
- convCtx.So(list, convey.ShouldNotBeNil)
- })
- })
- convCtx.Convey("stick test", func(convCtx convey.C) {
- originStickList, _ := d.GetStickTopic(ctx)
- d.setStickTopic(ctx, []int64{111111110, 111111111, 111111112})
- list, hasMore, err := d.ListRankTopics(ctx, 1, model.DiscoveryTopicSize)
- log.Infow(ctx, "list", list, "has_more", hasMore)
- convCtx.So(err, convey.ShouldBeNil)
- convCtx.So(list[0], convey.ShouldEqual, 111111110)
- convCtx.So(list[1], convey.ShouldEqual, 111111111)
- convCtx.So(list[2], convey.ShouldEqual, 111111112)
- convCtx.So(len(list), convey.ShouldEqual, 3+model.DiscoveryTopicSize)
- // 恢复原来的置顶话题
- if len(originStickList) > 0 {
- d.setStickTopic(ctx, originStickList)
- }
- })
- })
- }
- func TestDaogetStickTopic(t *testing.T) {
- convey.Convey("GetStickTopic", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- )
- convCtx.Convey("When everything goes positive", func(convCtx convey.C) {
- list, err := d.GetStickTopic(ctx)
- 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 TestDaoStickTopic(t *testing.T) {
- convey.Convey("StickTopic", t, func(convCtx convey.C) {
- var (
- ctx = context.Background()
- opTopicID = int64(1)
- op = int64(1)
- )
- originStickList, _ := d.GetStickTopic(ctx)
- convCtx.Convey("common stick operate", func(convCtx convey.C) {
- err := d.StickTopic(ctx, opTopicID, op)
- newStickList, _ := d.GetStickTopic(ctx)
- 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.StickTopic(ctx, opTopicID, 0)
- newCancelStickList, _ := d.GetStickTopic(ctx)
- 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.MaxStickTopicNum+3; i++ {
- d.StickTopic(ctx, int64(i), 1)
- }
- list, _ := d.GetStickTopic(ctx)
- log.V(1).Infow(ctx, "list", list)
- convCtx.So(len(list), convey.ShouldEqual, model.MaxStickTopicNum)
- })
- // 恢复原来的置顶话题
- if len(originStickList) > 0 {
- d.setStickTopic(ctx, originStickList)
- }
- })
- }
|