123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- package dao
- import (
- "context"
- "testing"
- "time"
- "go-common/app/service/main/archive/api"
- "go-common/app/service/main/archive/model/archive"
- "go-common/app/service/main/feed/model"
- feed "go-common/app/service/main/feed/model"
- xtime "go-common/library/time"
- . "github.com/smartystreets/goconvey/convey"
- )
- func Test_FeedValue(t *testing.T) {
- var (
- arc = api.Arc{Aid: 1}
- arc2 = api.Arc{Aid: 2}
- f feed.Feed
- )
- Convey("with fold avs", t, func() {
- f = feed.Feed{ID: 100, Fold: []*api.Arc{&arc, &arc2}}
- So(appFeedValue(&f), ShouldEqual, "0,100,1,2")
- })
- Convey("without fold avs", t, func() {
- f = feed.Feed{ID: 1}
- So(appFeedValue(&f), ShouldEqual, "0,1")
- })
- Convey("bangumi", t, func() {
- f = feed.Feed{ID: 100, Type: feed.BangumiType}
- So(appFeedValue(&f), ShouldEqual, "1,100")
- })
- }
- func Test_RecoverFeed(t *testing.T) {
- var (
- arc = api.Arc{Aid: 1}
- arc2 = api.Arc{Aid: 2}
- b = feed.Feed{ID: 100, Type: feed.BangumiType}
- f feed.Feed
- )
- Convey("bangumi", t, func() {
- r, err := recoverFeed("1,100")
- So(r, ShouldResemble, &b)
- So(err, ShouldBeNil)
- })
- Convey("with fold avs", t, func() {
- f = feed.Feed{ID: 100, Fold: []*api.Arc{&arc, &arc2}}
- r, err := recoverFeed("0,100,1,2")
- So(r, ShouldResemble, &f)
- So(err, ShouldBeNil)
- })
- Convey("without fold avs", t, func() {
- f = feed.Feed{ID: 100}
- r, err := recoverFeed("0,100")
- So(r, ShouldResemble, &f)
- So(err, ShouldBeNil)
- })
- }
- func Test_pingRedis(t *testing.T) {
- Convey("ping redis", t, func() {
- So(d.pingRedis(context.TODO()), ShouldBeNil)
- })
- }
- func Test_LastAccessCache(t *testing.T) {
- var (
- mid = int64(1)
- ts = int64(100)
- err error
- )
- Convey("add cache", t, func() {
- err = d.AddLastAccessCache(context.TODO(), model.TypeApp, mid, ts)
- So(err, ShouldBeNil)
- Convey("get cache", func() {
- t1, err := d.LastAccessCache(context.TODO(), model.TypeApp, mid)
- So(t1, ShouldEqual, t1)
- So(err, ShouldBeNil)
- })
- })
- }
- func Test_FeedCache(t *testing.T) {
- var (
- mid = int64(1)
- now = time.Now().Unix()
- err error
- a1 = api.Arc{Aid: 1, PubDate: xtime.Time(now)}
- a2 = api.Arc{Aid: 2, PubDate: xtime.Time(now - 1000)}
- a3 = api.Arc{Aid: 3}
- bangumi = feed.Bangumi{SeasonID: 100}
- f = feed.Feed{ID: 1, Archive: &a1, PubDate: a1.PubDate, Fold: []*api.Arc{&a3}}
- f1 = feed.Feed{ID: 2, Archive: &a2, PubDate: a2.PubDate}
- b = feed.Feed{ID: 100, Type: feed.BangumiType, Bangumi: &bangumi}
- feeds = []*feed.Feed{&f, &f1, &b}
- )
- Convey("add cache", t, func() {
- for name, client := range map[string]int{"app": model.TypeApp, "web": model.TypeWeb} {
- err = d.AddFeedCache(context.TODO(), client, mid, feeds)
- So(err, ShouldBeNil)
- Convey(name+"get cache", func() {
- res, bids, err := d.FeedCache(context.TODO(), client, mid, 0, 0)
- So(res, ShouldResemble, []*feed.Feed{{ID: f.ID, Fold: []*api.Arc{&a3}, PubDate: f.PubDate}})
- So(bids, ShouldBeEmpty)
- So(err, ShouldBeNil)
- })
- Convey(name+"get cache when end > length", func() {
- res, bids, err := d.FeedCache(context.TODO(), client, mid, 0, 10)
- So(res, ShouldResemble, []*feed.Feed{
- {ID: a1.Aid, Fold: []*api.Arc{&a3}, PubDate: a1.PubDate},
- {ID: a2.Aid, PubDate: a2.PubDate},
- {ID: 100, Type: feed.BangumiType},
- })
- So(bids, ShouldResemble, []int64{100})
- So(err, ShouldBeNil)
- })
- Convey(name+"expire cache", func() {
- ok, err := d.ExpireFeedCache(context.TODO(), client, mid)
- So(ok, ShouldEqual, true)
- So(err, ShouldBeNil)
- })
- Convey(name+"purge cache", func() {
- err := d.PurgeFeedCache(context.TODO(), client, mid)
- So(err, ShouldBeNil)
- })
- }
- })
- }
- func Test_UppersCache(t *testing.T) {
- var (
- mid = int64(1)
- mid2 = int64(2)
- now = time.Now().Unix()
- err error
- a1 = archive.AidPubTime{Aid: 1, PubDate: xtime.Time(now), Copyright: 1}
- a2 = archive.AidPubTime{Aid: 2, PubDate: xtime.Time(now - 1), Copyright: 0}
- a3 = archive.AidPubTime{Aid: 3, PubDate: xtime.Time(now - 2), Copyright: 0}
- )
- Convey("add cache", t, func() {
- err = d.AddUpperCaches(context.TODO(), map[int64][]*archive.AidPubTime{mid: {&a1, &a2}, mid2: {&a3}})
- So(err, ShouldBeNil)
- Convey("get cache", func() {
- _, err := d.UppersCaches(context.TODO(), []int64{mid, mid2}, 0, 2)
- So(err, ShouldBeNil)
- // So(res, ShouldResemble, map[int64][]*archive.AidPubTime{mid: {&a1, &a2}, mid2: {&a3}})
- })
- Convey("expire cache", func() {
- res, err := d.ExpireUppersCache(context.TODO(), []int64{mid})
- So(err, ShouldBeNil)
- So(res, ShouldResemble, map[int64]bool{mid: true})
- })
- Convey("get expired cache", func() {
- d.redisExpireUpper = 0
- res, err := d.ExpireUppersCache(context.TODO(), []int64{mid})
- So(err, ShouldBeNil)
- So(res, ShouldResemble, map[int64]bool{mid: false})
- _, err = d.UppersCaches(context.TODO(), []int64{mid}, 0, 2)
- So(err, ShouldBeNil)
- // So(nres, ShouldResemble, map[int64][]*archive.AidPubTime{mid: {&a1, &a2}})
- })
- Convey("purge cache", func() {
- err := d.DelUpperCache(context.TODO(), mid, a1.Aid)
- So(err, ShouldBeNil)
- })
- })
- }
- func Test_ArchiveFeedCache(t *testing.T) {
- var (
- mid = int64(1)
- now = time.Now().Unix()
- err error
- a1 = api.Arc{Aid: 1, PubDate: xtime.Time(now), Author: api.Author{Mid: mid}}
- a2 = api.Arc{Aid: 2, PubDate: xtime.Time(now - 1), Author: api.Author{Mid: mid}}
- a3 = api.Arc{Aid: 3, PubDate: xtime.Time(now - 2), Author: api.Author{Mid: mid}}
- f1 = feed.Feed{ID: a1.Aid, Archive: &a1, PubDate: a1.PubDate, Fold: []*api.Arc{&a3}}
- f2 = feed.Feed{ID: a2.Aid, Archive: &a2, PubDate: a2.PubDate}
- fs = []*feed.Feed{&f1, &f2}
- )
- Convey("add cache", t, func() {
- err = d.AddArchiveFeedCache(context.TODO(), mid, fs)
- So(err, ShouldBeNil)
- Convey("get cache", func() {
- as, err := d.ArchiveFeedCache(context.TODO(), mid, 0, 2)
- So(as, ShouldResemble, []*feed.Feed{
- {ID: a1.Aid, PubDate: a1.PubDate, Fold: []*api.Arc{{Aid: 3}}},
- {ID: a2.Aid, PubDate: a2.PubDate},
- })
- So(err, ShouldBeNil)
- })
- })
- }
- func Test_BangumiFeedCache(t *testing.T) {
- var (
- mid = int64(1)
- err error
- b1 = feed.Bangumi{SeasonID: 100}
- b2 = feed.Bangumi{SeasonID: 200}
- f1 = feed.Feed{ID: b1.SeasonID, Type: feed.BangumiType, Bangumi: &b1}
- f2 = feed.Feed{ID: b2.SeasonID, Type: feed.BangumiType, Bangumi: &b2}
- fs = []*feed.Feed{&f1, &f2}
- )
- Convey("add cache", t, func() {
- err = d.AddBangumiFeedCache(context.TODO(), mid, fs)
- So(err, ShouldBeNil)
- Convey("get cache", func() {
- res, err := d.BangumiFeedCache(context.TODO(), mid, 0, 2)
- So(res, ShouldResemble, []int64{b2.SeasonID, b1.SeasonID})
- So(err, ShouldBeNil)
- })
- })
- }
- func Test_UnreadCountCache(t *testing.T) {
- var (
- mid = int64(1)
- count = 100
- err error
- )
- Convey("add cache", t, func() {
- err = d.AddUnreadCountCache(context.TODO(), model.TypeApp, mid, count)
- So(err, ShouldBeNil)
- Convey("get cache", func() {
- c, err := d.UnreadCountCache(context.TODO(), model.TypeApp, mid)
- So(c, ShouldEqual, count)
- So(err, ShouldBeNil)
- })
- Convey("get wrong cache", func() {
- c, err := d.UnreadCountCache(context.TODO(), model.TypeWeb, mid)
- So(c, ShouldEqual, 0)
- So(err, ShouldBeNil)
- })
- })
- }
|