You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.9 KiB
106 lines
2.9 KiB
package weeklyhonor |
|
|
|
import ( |
|
"context" |
|
"flag" |
|
"fmt" |
|
"path/filepath" |
|
"reflect" |
|
"testing" |
|
"time" |
|
|
|
"go-common/app/interface/main/creative/conf" |
|
upDao "go-common/app/interface/main/creative/dao/up" |
|
honDao "go-common/app/interface/main/creative/dao/weeklyhonor" |
|
honmdl "go-common/app/interface/main/creative/model/weeklyhonor" |
|
"go-common/app/interface/main/creative/service" |
|
upmdl "go-common/app/service/main/up/model" |
|
xtime "go-common/library/time" |
|
|
|
"github.com/bouk/monkey" |
|
"github.com/smartystreets/goconvey/convey" |
|
) |
|
|
|
var ( |
|
s *Service |
|
) |
|
|
|
func init() { |
|
dir, _ := filepath.Abs("../../cmd/creative.toml") |
|
flag.Set("conf", dir) |
|
err := conf.Init() |
|
if err != nil { |
|
fmt.Printf("conf.Init() error(%v)", err) |
|
} |
|
rpcdaos := service.NewRPCDaos(conf.Conf) |
|
s = New(conf.Conf, rpcdaos) |
|
} |
|
|
|
func WithService(f func(s *Service)) func() { |
|
return func() { |
|
convey.Reset(func() {}) |
|
f(s) |
|
} |
|
} |
|
|
|
func TestService_WeeklyHonor(t *testing.T) { |
|
var ( |
|
mid int64 = 1 |
|
uid int64 = 2 |
|
token = s.genToken(2) |
|
mockStat = honmdl.HonorStat{ |
|
Play: 100, |
|
PlayLastW: 100, |
|
Fans: 100, |
|
FansInc: 2000, |
|
CoinInc: 2000, |
|
Rank3: 50, |
|
} |
|
mockHls = map[int]*honmdl.HonorLog{ |
|
12: { |
|
ID: 1, |
|
MID: uid, |
|
HID: 12, |
|
Count: 1, |
|
MTime: xtime.Time(time.Now().AddDate(0, 0, -5).Unix()), |
|
}, |
|
23: { |
|
ID: 1, |
|
MID: uid, |
|
HID: 12, |
|
Count: 1, |
|
MTime: xtime.Time(honmdl.LatestSunday().Add(time.Hour).Unix()), |
|
}, |
|
} |
|
) |
|
convey.Convey("test", t, WithService(func(s *Service) { |
|
// mock |
|
s.c.HonorDegradeSwitch = false |
|
monkey.PatchInstanceMethod(reflect.TypeOf(s.up), "UpInfo", func(_ *upDao.Dao, _ context.Context, _ int64, _ int, _ string) (*upmdl.UpInfo, error) { |
|
return &upmdl.UpInfo{IsAuthor: 1}, nil |
|
}) |
|
monkey.PatchInstanceMethod(reflect.TypeOf(s.honDao), "StatMC", func(_ *honDao.Dao, _ context.Context, _ int64, _ string) (*honmdl.HonorStat, error) { |
|
return &mockStat, nil |
|
}) |
|
monkey.PatchInstanceMethod(reflect.TypeOf(s.honDao), "HonorMC", func(_ *honDao.Dao, _ context.Context, _ int64, _ string) (*honmdl.HonorLog, error) { |
|
return nil, nil |
|
}) |
|
monkey.PatchInstanceMethod(reflect.TypeOf(s.honDao), "HonorLogs", func(_ *honDao.Dao, _ context.Context, _ int64) (map[int]*honmdl.HonorLog, error) { |
|
return mockHls, nil |
|
}) |
|
defer monkey.UnpatchAll() |
|
// test guest visit |
|
honor, err := s.WeeklyHonor(context.Background(), mid, uid, token) |
|
convey.ShouldBeNil(err) |
|
convey.So(honor.HID, convey.ShouldEqual, 20) |
|
convey.So(honor.SubState, convey.ShouldEqual, 0) |
|
// test up visit |
|
monkey.PatchInstanceMethod(reflect.TypeOf(s.honDao), "GetUpSwitch", func(_ *honDao.Dao, _ context.Context, _ int64) (uint8, error) { |
|
return 1, nil |
|
}) |
|
honor, err = s.WeeklyHonor(context.Background(), uid, uid, token) |
|
convey.ShouldBeNil(err) |
|
convey.So(honor.HID, convey.ShouldEqual, 20) |
|
convey.So(honor.SubState, convey.ShouldEqual, 1) |
|
})) |
|
}
|
|
|