chore: seed migration objects batch 52

This commit is contained in:
dev
2026-10-18 13:38:08 +08:00
parent f440b9e0e8
commit 042fd3f826
23 changed files with 793 additions and 99 deletions
+37 -15
View File
@@ -13,14 +13,15 @@ import (
)
type fakeRepository struct {
config json.RawMessage
banners []store.Banner
content *store.Content
levels []store.MemberLevel
notices []store.MemberNotice
summary *store.TaskSummary
leaders []store.LeaderboardMember
services []store.CustomerService
config json.RawMessage
banners []store.Banner
content *store.Content
levels []store.MemberLevel
notices []store.MemberNotice
summary *store.TaskSummary
leaders []store.LeaderboardMember
services []store.CustomerService
noticePage *store.MemberNoticePage
}
func (r fakeRepository) CurrentSiteConfig(context.Context, int64) (json.RawMessage, error) {
@@ -41,6 +42,12 @@ func (r fakeRepository) ActiveMemberLevels(context.Context, int64) ([]store.Memb
func (r fakeRepository) ActiveMemberNotices(context.Context, int64, int64, int) ([]store.MemberNotice, error) {
return r.notices, nil
}
func (r fakeRepository) MemberNotices(context.Context, int64, int64, int, int) (*store.MemberNoticePage, error) {
if r.noticePage == nil {
return &store.MemberNoticePage{Items: []store.MemberNotice{}}, nil
}
return r.noticePage, nil
}
func (r fakeRepository) MemberTaskSummary(context.Context, int64, int64) (*store.TaskSummary, error) {
return r.summary, nil
}
@@ -61,13 +68,6 @@ func TestParseFeaturesSupportsNestedAndLegacyKeys(t *testing.T) {
}
}
func TestParseFeaturesDefaultsToEnabled(t *testing.T) {
features := parseFeatures(json.RawMessage(`{"siteName":"demo"}`))
if !features.TaskEnabled || !features.RechargeEnabled || !features.WithdrawalEnabled || !features.ManualMallEnabled {
t.Fatalf("unexpected feature defaults: %+v", features)
}
}
func TestBannersSanitizeTargets(t *testing.T) {
service := New(fakeRepository{banners: []store.Banner{
{ID: 1, TargetType: 2, TargetValue: "/receive"},
@@ -171,3 +171,25 @@ func TestCustomerServicesSanitizeURLsAndMapStatus(t *testing.T) {
t.Fatalf("unexpected customer services: %+v", items)
}
}
func TestNoticesMapsPageAndSourceType(t *testing.T) {
service := New(fakeRepository{noticePage: &store.MemberNoticePage{
Items: []store.MemberNotice{{ID: 3, Title: "活动通知", SourceType: 2, CreatedAt: "2026-10-13T08:00:00Z"}},
Total: 21,
}})
page, err := service.Notices(context.Background(), 1, 7, 2, 20)
if err != nil {
t.Fatal(err)
}
if page.Page != 2 || page.PageSize != 20 || page.Total != 21 || len(page.Items) != 1 ||
page.Items[0].SourceType != "operational_simulation" || page.Items[0].CreatedAt == "" {
t.Fatalf("unexpected notice page: %+v", page)
}
}
func TestNoticesRejectsOversizedPage(t *testing.T) {
service := New(fakeRepository{})
if _, err := service.Notices(context.Background(), 1, 7, 1, 101); !errors.Is(err, ErrPageSizeInvalid) {
t.Fatalf("error = %v, want %v", err, ErrPageSizeInvalid)
}
}