68 lines
2.3 KiB
Go
68 lines
2.3 KiB
Go
package appconfig
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestBannerModelFromRequestRequiresRoomSmallImageForRoomScope(t *testing.T) {
|
|
_, err := bannerModelFromRequest("lalu", bannerRequest{
|
|
CoverURL: "https://cdn.example.com/banner.png",
|
|
BannerType: "h5",
|
|
DisplayScope: bannerDisplayScopeRoom,
|
|
Param: "https://h5.example.com/activity",
|
|
Status: bannerStatusActive,
|
|
Platform: "android",
|
|
EndsAtMs: time.Now().UTC().Add(time.Hour).UnixMilli(),
|
|
})
|
|
if err == nil {
|
|
t.Fatal("expected room scope without room small image to fail")
|
|
}
|
|
}
|
|
|
|
func TestBannerModelFromRequestKeepsRoomScopeScheduleFields(t *testing.T) {
|
|
startsAtMs := time.Now().UTC().Add(time.Hour).UnixMilli()
|
|
endsAtMs := startsAtMs + int64(time.Hour/time.Millisecond)
|
|
item, err := bannerModelFromRequest("lalu", bannerRequest{
|
|
CoverURL: "https://cdn.example.com/banner.png",
|
|
RoomSmallImageURL: "https://cdn.example.com/banner-small.png",
|
|
BannerType: "h5",
|
|
DisplayScope: bannerDisplayScopeRoom,
|
|
Param: "https://h5.example.com/activity",
|
|
Status: bannerStatusActive,
|
|
Platform: "android",
|
|
StartsAtMs: startsAtMs,
|
|
EndsAtMs: endsAtMs,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("banner model should be valid: %v", err)
|
|
}
|
|
if item.DisplayScope != bannerDisplayScopeRoom || item.RoomSmallImageURL == "" {
|
|
t.Fatalf("room display fields mismatch: %+v", item)
|
|
}
|
|
if item.StartsAtMS != startsAtMs || item.EndsAtMS != endsAtMs || item.Status != bannerStatusActive {
|
|
t.Fatalf("schedule fields mismatch: %+v", item)
|
|
}
|
|
}
|
|
|
|
func TestBannerModelFromRequestExpiresEndedActiveBanner(t *testing.T) {
|
|
item, err := bannerModelFromRequest("lalu", bannerRequest{
|
|
CoverURL: "https://cdn.example.com/banner.png",
|
|
RoomSmallImageURL: "https://cdn.example.com/ignored.png",
|
|
BannerType: "app",
|
|
DisplayScope: bannerDisplayScopeHome,
|
|
Status: bannerStatusActive,
|
|
Platform: "ios",
|
|
EndsAtMs: 1,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("banner model should accept ended active banner: %v", err)
|
|
}
|
|
if item.Status != bannerStatusExpired {
|
|
t.Fatalf("ended active banner must become expired: %+v", item)
|
|
}
|
|
if item.RoomSmallImageURL != "" {
|
|
t.Fatalf("non-room banner must not retain room small image: %+v", item)
|
|
}
|
|
}
|