diff --git a/test/common/shouldDo.test.js b/test/common/shouldDo.test.js index 0c5d01766a..d11a959ca1 100644 --- a/test/common/shouldDo.test.js +++ b/test/common/shouldDo.test.js @@ -1,6 +1,6 @@ -import { shouldDo } from '../../website/common/script/cron'; +import { shouldDo, DAY_MAPPING } from '../../website/common/script/cron'; import moment from 'moment'; -// import 'moment-recur'; +import 'moment-recur'; describe('shouldDo', () => { let day, dailyTask; @@ -481,215 +481,215 @@ describe('shouldDo', () => { }); }); - // context('Every X Weeks', () => { - // it('leaves daily inactive if it has not been the specified number of weeks', () => { - // dailyTask.everyX = 3; - // let tomorrow = moment().add(1, 'day').toDate(); - // - // expect(shouldDo(tomorrow, dailyTask, options)).to.equal(false); - // }); - // - // it('leaves daily inactive if on every (x) week on weekday it is incorrect weekday', () => { - // dailyTask.repeat = { - // su: false, - // s: false, - // f: false, - // th: false, - // w: false, - // t: false, - // m: false, - // }; - // - // day = moment(); - // dailyTask.repeat[DAY_MAPPING[day.day()]] = true; - // dailyTask.everyX = 3; - // let threeWeeksFromTodayPlusOne = day.add(1, 'day').add(3, 'weeks').toDate(); - // - // expect(shouldDo(threeWeeksFromTodayPlusOne, dailyTask, options)).to.equal(false); - // }); - // - // it('activates Daily on matching week', () => { - // dailyTask.everyX = 3; - // let threeWeeksFromToday = moment().add(3, 'weeks').toDate(); - // - // expect(shouldDo(threeWeeksFromToday, dailyTask, options)).to.equal(true); - // }); - // - // it('activates Daily on every (x) week on weekday', () => { - // dailyTask.repeat = { - // su: false, - // s: false, - // f: false, - // th: false, - // w: false, - // t: false, - // m: false, - // }; - // - // day = moment(); - // dailyTask.repeat[DAY_MAPPING[day.day()]] = true; - // dailyTask.everyX = 3; - // let threeWeeksFromToday = day.add(6, 'weeks').day(day.day()).toDate(); - // - // expect(shouldDo(threeWeeksFromToday, dailyTask, options)).to.equal(true); - // }); - // }); - // - // context('Monthly - Every X Months on a specified date', () => { - // it('leaves daily inactive if not day of the month', () => { - // dailyTask.everyX = 1; - // dailyTask.frequency = 'monthly'; - // dailyTask.daysOfMonth = [15]; - // let tomorrow = moment().add(1, 'day').toDate();// @TODO: make sure this is not the 15 - // - // expect(shouldDo(tomorrow, dailyTask, options)).to.equal(false); - // }); - // - // it('activates Daily on matching day of month', () => { - // day = moment(); - // dailyTask.everyX = 1; - // dailyTask.frequency = 'monthly'; - // dailyTask.daysOfMonth = [day.date()]; - // day = day.add(1, 'months').date(day.date()).toDate(); - // - // expect(shouldDo(day, dailyTask, options)).to.equal(true); - // }); - // - // it('leaves daily inactive if not on date of the x month', () => { - // dailyTask.everyX = 2; - // dailyTask.frequency = 'monthly'; - // dailyTask.daysOfMonth = [15]; - // let tomorrow = moment().add(2, 'months').add(1, 'day').toDate(); - // - // expect(shouldDo(tomorrow, dailyTask, options)).to.equal(false); - // }); - // - // it('activates Daily if on date of the x month', () => { - // dailyTask.everyX = 2; - // dailyTask.frequency = 'monthly'; - // dailyTask.daysOfMonth = [15]; - // day = moment().add(2, 'months').date(15).toDate(); - // expect(shouldDo(day, dailyTask, options)).to.equal(true); - // }); - // }); - // - // context('Monthly - Certain days of the nth Week', () => { - // it('leaves daily inactive if not the correct week of the month on the day of the start date', () => { - // dailyTask.repeat = { - // su: false, - // s: false, - // f: false, - // th: false, - // w: false, - // t: false, - // m: false, - // }; - // - // let today = moment('01/27/2017'); - // let week = today.monthWeek(); - // let dayOfWeek = today.day(); - // dailyTask.startDate = today.toDate(); - // dailyTask.weeksOfMonth = [week]; - // dailyTask.repeat[DAY_MAPPING[dayOfWeek]] = true; - // dailyTask.everyX = 1; - // dailyTask.frequency = 'monthly'; - // day = moment('02/23/2017'); - // - // expect(shouldDo(day, dailyTask, options)).to.equal(false); - // }); - // - // it('activates Daily if correct week of the month on the day of the start date', () => { - // dailyTask.repeat = { - // su: false, - // s: false, - // f: false, - // th: false, - // w: false, - // t: false, - // m: false, - // }; - // - // let today = moment('01/27/2017'); - // let week = today.monthWeek(); - // let dayOfWeek = today.day(); - // dailyTask.startDate = today.toDate(); - // dailyTask.weeksOfMonth = [week]; - // dailyTask.repeat[DAY_MAPPING[dayOfWeek]] = true; - // dailyTask.everyX = 1; - // dailyTask.frequency = 'monthly'; - // day = moment('02/24/2017'); - // - // expect(shouldDo(day, dailyTask, options)).to.equal(true); - // }); - // - // it('leaves daily inactive if not day of the month with every x month on weekday', () => { - // dailyTask.repeat = { - // su: false, - // s: false, - // f: false, - // th: false, - // w: false, - // t: false, - // m: false, - // }; - // - // let today = moment('01/26/2017'); - // let week = today.monthWeek(); - // let dayOfWeek = today.day(); - // dailyTask.startDate = today.toDate(); - // dailyTask.weeksOfMonth = [week]; - // dailyTask.repeat[DAY_MAPPING[dayOfWeek]] = true; - // dailyTask.everyX = 2; - // dailyTask.frequency = 'monthly'; - // - // day = moment('03/24/2017'); - // - // expect(shouldDo(day, dailyTask, options)).to.equal(false); - // }); - // - // it('activates Daily if on nth weekday of the x month', () => { - // dailyTask.repeat = { - // su: false, - // s: false, - // f: false, - // th: false, - // w: false, - // t: false, - // m: false, - // }; - // - // let today = moment('01/27/2017'); - // let week = today.monthWeek(); - // let dayOfWeek = today.day(); - // dailyTask.startDate = today.toDate(); - // dailyTask.weeksOfMonth = [week]; - // dailyTask.repeat[DAY_MAPPING[dayOfWeek]] = true; - // dailyTask.everyX = 2; - // dailyTask.frequency = 'monthly'; - // - // day = moment('03/24/2017'); - // - // expect(shouldDo(day, dailyTask, options)).to.equal(true); - // }); - // }); - // - // context('Every X Years', () => { - // it('leaves daily inactive if not the correct year', () => { - // day = moment(); - // dailyTask.everyX = 2; - // dailyTask.frequency = 'yearly'; - // day = day.add(1, 'day').toDate(); - // - // expect(shouldDo(day, dailyTask, options)).to.equal(false); - // }); - // - // it('activates Daily on matching year', () => { - // day = moment(); - // dailyTask.everyX = 2; - // dailyTask.frequency = 'yearly'; - // day = day.add(2, 'years').toDate(); - // - // expect(shouldDo(day, dailyTask, options)).to.equal(true); - // }); - // }); + context('Every X Weeks', () => { + it('leaves daily inactive if it has not been the specified number of weeks', () => { + dailyTask.everyX = 3; + let tomorrow = moment().add(1, 'day').toDate(); + + expect(shouldDo(tomorrow, dailyTask, options)).to.equal(false); + }); + + it('leaves daily inactive if on every (x) week on weekday it is incorrect weekday', () => { + dailyTask.repeat = { + su: false, + s: false, + f: false, + th: false, + w: false, + t: false, + m: false, + }; + + day = moment(); + dailyTask.repeat[DAY_MAPPING[day.day()]] = true; + dailyTask.everyX = 3; + let threeWeeksFromTodayPlusOne = day.add(1, 'day').add(3, 'weeks').toDate(); + + expect(shouldDo(threeWeeksFromTodayPlusOne, dailyTask, options)).to.equal(false); + }); + + it('activates Daily on matching week', () => { + dailyTask.everyX = 3; + let threeWeeksFromToday = moment().add(3, 'weeks').toDate(); + + expect(shouldDo(threeWeeksFromToday, dailyTask, options)).to.equal(true); + }); + + it('activates Daily on every (x) week on weekday', () => { + dailyTask.repeat = { + su: false, + s: false, + f: false, + th: false, + w: false, + t: false, + m: false, + }; + + day = moment(); + dailyTask.repeat[DAY_MAPPING[day.day()]] = true; + dailyTask.everyX = 3; + let threeWeeksFromToday = day.add(6, 'weeks').day(day.day()).toDate(); + + expect(shouldDo(threeWeeksFromToday, dailyTask, options)).to.equal(true); + }); + }); + + context('Monthly - Every X Months on a specified date', () => { + it('leaves daily inactive if not day of the month', () => { + dailyTask.everyX = 1; + dailyTask.frequency = 'monthly'; + dailyTask.daysOfMonth = [15]; + let tomorrow = moment().add(1, 'day').toDate();// @TODO: make sure this is not the 15 + + expect(shouldDo(tomorrow, dailyTask, options)).to.equal(false); + }); + + it('activates Daily on matching day of month', () => { + day = moment(); + dailyTask.everyX = 1; + dailyTask.frequency = 'monthly'; + dailyTask.daysOfMonth = [day.date()]; + day = day.add(1, 'months').date(day.date()).toDate(); + + expect(shouldDo(day, dailyTask, options)).to.equal(true); + }); + + it('leaves daily inactive if not on date of the x month', () => { + dailyTask.everyX = 2; + dailyTask.frequency = 'monthly'; + dailyTask.daysOfMonth = [15]; + let tomorrow = moment().add(2, 'months').add(1, 'day').toDate(); + + expect(shouldDo(tomorrow, dailyTask, options)).to.equal(false); + }); + + it('activates Daily if on date of the x month', () => { + dailyTask.everyX = 2; + dailyTask.frequency = 'monthly'; + dailyTask.daysOfMonth = [15]; + day = moment().add(2, 'months').date(15).toDate(); + expect(shouldDo(day, dailyTask, options)).to.equal(true); + }); + }); + + context('Monthly - Certain days of the nth Week', () => { + it('leaves daily inactive if not the correct week of the month on the day of the start date', () => { + dailyTask.repeat = { + su: false, + s: false, + f: false, + th: false, + w: false, + t: false, + m: false, + }; + + let today = moment('2017-01-27'); + let week = today.monthWeek(); + let dayOfWeek = today.day(); + dailyTask.startDate = today.toDate(); + dailyTask.weeksOfMonth = [week]; + dailyTask.repeat[DAY_MAPPING[dayOfWeek]] = true; + dailyTask.everyX = 1; + dailyTask.frequency = 'monthly'; + day = moment('2017-02-23'); + + expect(shouldDo(day, dailyTask, options)).to.equal(false); + }); + + it('activates Daily if correct week of the month on the day of the start date', () => { + dailyTask.repeat = { + su: false, + s: false, + f: false, + th: false, + w: false, + t: false, + m: false, + }; + + let today = moment('2017-01-27'); + let week = today.monthWeek(); + let dayOfWeek = today.day(); + dailyTask.startDate = today.toDate(); + dailyTask.weeksOfMonth = [week]; + dailyTask.repeat[DAY_MAPPING[dayOfWeek]] = true; + dailyTask.everyX = 1; + dailyTask.frequency = 'monthly'; + day = moment('2017-02-24'); + + expect(shouldDo(day, dailyTask, options)).to.equal(true); + }); + + it('leaves daily inactive if not day of the month with every x month on weekday', () => { + dailyTask.repeat = { + su: false, + s: false, + f: false, + th: false, + w: false, + t: false, + m: false, + }; + + let today = moment('2017-01-26'); + let week = today.monthWeek(); + let dayOfWeek = today.day(); + dailyTask.startDate = today.toDate(); + dailyTask.weeksOfMonth = [week]; + dailyTask.repeat[DAY_MAPPING[dayOfWeek]] = true; + dailyTask.everyX = 2; + dailyTask.frequency = 'monthly'; + + day = moment('2017-03-24'); + + expect(shouldDo(day, dailyTask, options)).to.equal(false); + }); + + it('activates Daily if on nth weekday of the x month', () => { + dailyTask.repeat = { + su: false, + s: false, + f: false, + th: false, + w: false, + t: false, + m: false, + }; + + let today = moment('2017-01-27'); + let week = today.monthWeek(); + let dayOfWeek = today.day(); + dailyTask.startDate = today.toDate(); + dailyTask.weeksOfMonth = [week]; + dailyTask.repeat[DAY_MAPPING[dayOfWeek]] = true; + dailyTask.everyX = 2; + dailyTask.frequency = 'monthly'; + + day = moment('2017-03-24'); + + expect(shouldDo(day, dailyTask, options)).to.equal(true); + }); + }); + + context('Every X Years', () => { + it('leaves daily inactive if not the correct year', () => { + day = moment(); + dailyTask.everyX = 2; + dailyTask.frequency = 'yearly'; + day = day.add(1, 'day').toDate(); + + expect(shouldDo(day, dailyTask, options)).to.equal(false); + }); + + it('activates Daily on matching year', () => { + day = moment(); + dailyTask.everyX = 2; + dailyTask.frequency = 'yearly'; + day = day.add(2, 'years').toDate(); + + expect(shouldDo(day, dailyTask, options)).to.equal(true); + }); + }); });