82 lines
2.0 KiB
Go
82 lines
2.0 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/Wei-Shaw/sub2api/internal/pkg/pagination"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type announcementRepoStub struct {
|
|
item *Announcement
|
|
}
|
|
|
|
func (s *announcementRepoStub) Create(_ context.Context, a *Announcement) error {
|
|
s.item = a
|
|
return nil
|
|
}
|
|
|
|
func (s *announcementRepoStub) GetByID(_ context.Context, _ int64) (*Announcement, error) {
|
|
if s.item == nil {
|
|
return nil, ErrAnnouncementNotFound
|
|
}
|
|
return s.item, nil
|
|
}
|
|
|
|
func (s *announcementRepoStub) Update(_ context.Context, a *Announcement) error {
|
|
s.item = a
|
|
return nil
|
|
}
|
|
|
|
func (*announcementRepoStub) Delete(context.Context, int64) error {
|
|
return nil
|
|
}
|
|
|
|
func (*announcementRepoStub) List(context.Context, pagination.PaginationParams, AnnouncementListFilters) ([]Announcement, *pagination.PaginationResult, error) {
|
|
return nil, nil, nil
|
|
}
|
|
|
|
func (*announcementRepoStub) ListActive(context.Context, time.Time) ([]Announcement, error) {
|
|
return nil, nil
|
|
}
|
|
|
|
func TestAnnouncementServiceCreateRejectsEqualStartEndTimes(t *testing.T) {
|
|
repo := &announcementRepoStub{}
|
|
svc := NewAnnouncementService(repo, nil, nil, nil)
|
|
now := time.Unix(1776790020, 0)
|
|
|
|
_, err := svc.Create(context.Background(), &CreateAnnouncementInput{
|
|
Title: "公告",
|
|
Content: "内容",
|
|
Status: AnnouncementStatusActive,
|
|
NotifyMode: AnnouncementNotifyModePopup,
|
|
StartsAt: &now,
|
|
EndsAt: &now,
|
|
})
|
|
require.ErrorIs(t, err, ErrAnnouncementInvalidSchedule)
|
|
}
|
|
|
|
func TestAnnouncementServiceUpdateRejectsEqualStartEndTimes(t *testing.T) {
|
|
repo := &announcementRepoStub{
|
|
item: &Announcement{
|
|
ID: 1,
|
|
Title: "公告",
|
|
Content: "内容",
|
|
Status: AnnouncementStatusActive,
|
|
NotifyMode: AnnouncementNotifyModePopup,
|
|
},
|
|
}
|
|
svc := NewAnnouncementService(repo, nil, nil, nil)
|
|
now := time.Unix(1776790020, 0)
|
|
startsAt := &now
|
|
endsAt := &now
|
|
|
|
_, err := svc.Update(context.Background(), 1, &UpdateAnnouncementInput{
|
|
StartsAt: &startsAt,
|
|
EndsAt: &endsAt,
|
|
})
|
|
require.ErrorIs(t, err, ErrAnnouncementInvalidSchedule)
|
|
}
|