diff --git a/test/common/shouldDo.test.js b/test/common/shouldDo.test.js index 144a2663be..5f2fe4494f 100644 --- a/test/common/shouldDo.test.js +++ b/test/common/shouldDo.test.js @@ -322,6 +322,25 @@ describe('shouldDo', () => { } }); + it('returns false and ignore malformed repeat object', () => { + dailyTask.repeat = { + su: false, + s: false, + f: false, + th: false, + w: false, + t: false, + m: false, + errors: 'errors', + }; + + for (let weekday of [0, 1, 2, 3, 4, 5, 6]) { + day = moment().day(weekday).toDate(); + + expect(shouldDo(day, dailyTask, options)).to.equal(false); + } + }); + it('returns false if day of the week does not match and active on the day it matches', () => { dailyTask.repeat = { su: false, diff --git a/website/common/script/cron.js b/website/common/script/cron.js index bd6532278d..1205e15472 100644 --- a/website/common/script/cron.js +++ b/website/common/script/cron.js @@ -113,6 +113,7 @@ export function shouldDo (day, dailyTask, options = {}) { if (dailyTask.repeat) { for (let [repeatDay, active] of Object.entries(dailyTask.repeat)) { + if (!isFinite(DAY_MAPPING_STRING_TO_NUMBER[repeatDay])) continue; // eslint-disable-line no-continue if (active) daysOfTheWeek.push(parseInt(DAY_MAPPING_STRING_TO_NUMBER[repeatDay], 10)); } }