From f2d19f915e0a4cb23c7a28a1082213b41be25fdc Mon Sep 17 00:00:00 2001 From: Randy Schott <1815175+schottra@users.noreply.github.com> Date: Fri, 13 Nov 2020 15:54:12 -0800 Subject: [PATCH] fix: use one-based day of week for aws cron expressions --- src/common/formatters.ts | 10 ++++------ src/common/test/formatters.spec.ts | 7 ++----- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/common/formatters.ts b/src/common/formatters.ts index 89ed03e3c..36eca1a0e 100644 --- a/src/common/formatters.ts +++ b/src/common/formatters.ts @@ -1,11 +1,7 @@ import cronstrue from 'cronstrue'; import { Admin, Protobuf } from 'flyteidl'; import * as moment from 'moment-timezone'; -import { - subSecondString, - unknownValueString, - zeroSecondsString -} from './constants'; +import { unknownValueString, zeroSecondsString } from './constants'; import { timezone } from './timezone'; import { durationToMilliseconds, isValidDate } from './utils'; @@ -202,7 +198,9 @@ export function getScheduleFrequencyString(schedule?: Admin.ISchedule) { if (schedule.cronExpression) { // Need to add a leading 0 to get a valid CRON expression, because // ISchedule is using AWS-style expressions, which don't allow a `seconds` position - return cronstrue.toString(`0 ${schedule.cronExpression}`); + return cronstrue.toString(`0 ${schedule.cronExpression}`, { + dayOfWeekStartIndexZero: false + }); } if (schedule.rate) { return fixedRateToString(schedule.rate); diff --git a/src/common/test/formatters.spec.ts b/src/common/test/formatters.spec.ts index c9be7bef0..f2382b7f8 100644 --- a/src/common/test/formatters.spec.ts +++ b/src/common/test/formatters.spec.ts @@ -1,11 +1,7 @@ import { millisecondsToDuration } from 'common/utils'; import { Admin } from 'flyteidl'; import * as moment from 'moment-timezone'; -import { - subSecondString, - unknownValueString, - zeroSecondsString -} from '../constants'; +import { unknownValueString, zeroSecondsString } from '../constants'; import { dateDiffString, dateFromNow, @@ -199,6 +195,7 @@ describe('getScheduleFrequencyString', () => { // input and expected result const cases: [Admin.ISchedule, string][] = [ [{ cronExpression: '* * * * *' }, 'Every minute'], + [{ cronExpression: '0 20 ? * 3 *' }, 'At 08:00 PM, only on Tuesday'], [ { rate: { value: 1, unit: Admin.FixedRateUnit.MINUTE } }, 'Every 1 minutes'