diff --git a/test/content/schedule.test.js b/test/content/schedule.test.js index 17de1c3f83..748bd53ce8 100644 --- a/test/content/schedule.test.js +++ b/test/content/schedule.test.js @@ -3,33 +3,66 @@ import { expectValidTranslationString, } from '../helpers/content.helper'; */ // eslint-disable-next-line max-len -// import { assembleScheduledMatchers } from '../../website/common/script/content/constants/schedule'; +import { getAllScheduleMatchingGroups } from '../../website/common/script/content/constants/schedule'; + +function validateMatcher(matcher, checkedDate) { + expect(matcher.end).to.be.a('date'); + expect(matcher.end).to.be.greaterThan(checkedDate); +} describe('Content Schedule', () => { it('assembles scheduled items on january 15th', () => { - // const items = assembleScheduledMatchers(new Date('2024-01-15')); + const date = new Date('2024-01-15'); + const matchers = getAllScheduleMatchingGroups(date); + for (const key in matchers) { + validateMatcher(matchers[key], date); + } }); it('assembles scheduled items on january 31th', () => { - // const items = assembleScheduledMatchers(new Date('2024-01-31')); + const date = new Date('2024-01-31') + const matchers = getAllScheduleMatchingGroups(date); + for (const key in matchers) { + validateMatcher(matchers[key], date); + } }); it('assembles scheduled items on march 2nd', () => { - // const items = assembleScheduledMatchers(new Date('2024-03-02')); + const date = new Date('2024-03-02'); + const matchers = getAllScheduleMatchingGroups(date); + for (const key in matchers) { + validateMatcher(matchers[key], date); + } }); it('assembles scheduled items on march 21st', () => { - // const items = assembleScheduledMatchers(new Date('2024-03-21')); + const date = new Date('2024-03-21'); + const matchers = getAllScheduleMatchingGroups(date); + for (const key in matchers) { + validateMatcher(matchers[key], date); + } }); it('assembles scheduled items on october 7th', () => { - // const items = assembleScheduledMatchers(new Date('2024-10-07')); + const date = new Date('2024-10-07') + const matchers = getAllScheduleMatchingGroups(date); + for (const key in matchers) { + validateMatcher(matchers[key], date); + } }); it('assembles scheduled items on november 1th', () => { - // const items = assembleScheduledMatchers(new Date('2024-11-01')); + const date = new Date('2024-11-01'); + const matchers = getAllScheduleMatchingGroups(date); + for (const key in matchers) { + validateMatcher(matchers[key], date); + } }); it('assembles scheduled items on december 20th', () => { - // const items = assembleScheduledMatchers(new Date('2024-12-20')); + const date = new Date('2024-12-20'); + const matchers = getAllScheduleMatchingGroups(date); + for (const key in matchers) { + validateMatcher(matchers[key], date); + } }); }); diff --git a/website/common/script/content/constants/schedule.js b/website/common/script/content/constants/schedule.js index adbe353c00..fc9c96bced 100644 --- a/website/common/script/content/constants/schedule.js +++ b/website/common/script/content/constants/schedule.js @@ -641,8 +641,8 @@ export const GALA_SCHEDULE = { // Winter 0: { startMonth: 11, - endMonth: 1, - filters: [ + endMonth: 2, + matchers: [ { type: 'seasonalGear', items: SEASONAL_SETS.winter, @@ -672,8 +672,8 @@ export const GALA_SCHEDULE = { // Spring 1: { startMonth: 2, - endMonth: 4, - filters: [ + endMonth: 5, + matchers: [ { type: 'seasonalGear', items: SEASONAL_SETS.spring, @@ -703,8 +703,8 @@ export const GALA_SCHEDULE = { // Summer 2: { startMonth: 5, - endMonth: 7, - filters: [ + endMonth: 8, + matchers: [ { type: 'seasonalGear', items: SEASONAL_SETS.summer, @@ -731,8 +731,8 @@ export const GALA_SCHEDULE = { // Fall 3: { startMonth: 8, - endMonth: 10, - filters: [ + endMonth: 11, + matchers: [ { type: 'seasonalGear', items: SEASONAL_SETS.fall, @@ -815,8 +815,12 @@ export function assembleScheduledMatchers (date) { items.push(...value); } } - - items.push(...GALA_SCHEDULE[getGalaIndex(date)].filters); + const gala = GALA_SCHEDULE[getGalaIndex(date)]; + const galaMatchers = gala.matchers; + galaMatchers.forEach(matcher => { + matcher.endMonth = gala.endMonth; + }); + items.push(...galaMatchers); for (const event in getRepeatingEvents(date)) { if (event.content) { items.push(...event.content); @@ -849,6 +853,17 @@ function makeMatcherClass () { }; } +function makeEndDate(checkedDate, matcher) { + let end = moment(checkedDate); + end.date(TYPE_SCHEDULE[matcher.type]); + if (matcher.endMonth !== undefined) { + end.month(matcher.endMonth); + } else if (end.date() <= moment(checkedDate).date()) { + end = moment(end).add(1, 'months'); + } + return end.toDate(); +} + export function getAllScheduleMatchingGroups (date) { const checkedDate = date || new Date(); if (cacheDate !== null && (getDay(checkedDate) !== getDay(cacheDate) @@ -865,12 +880,7 @@ export function getAllScheduleMatchingGroups (date) { if (!cachedScheduleMatchers[matcher.type]) { cachedScheduleMatchers[matcher.type] = makeMatcherClass(); } - const end = moment(checkedDate); - end.date(TYPE_SCHEDULE[type]); - if (end.date() <= moment(checkedDate).date()) { - moment(end).add(1, 'months'); - } - cachedScheduleMatchers[matcher.type].end = end.toDate(); + cachedScheduleMatchers[matcher.type].end = makeEndDate(checkedDate, matcher); if (matcher.matcher instanceof Function) { cachedScheduleMatchers[matcher.type].matchers.push(matcher.matcher); } else if (matcher.items instanceof Array) {