From f48bc33e0038710dfe828827d52c9100e66702d4 Mon Sep 17 00:00:00 2001 From: Dean Sheather Date: Wed, 11 Oct 2023 06:55:28 +1100 Subject: [PATCH] chore: remove cron schedule from quiet hours schedule page (#10187) --- .../UserSettingsPage/SchedulePage/ScheduleForm.tsx | 11 ++--------- .../SchedulePage/SchedulePage.test.tsx | 4 ---- site/src/utils/schedule.ts | 11 +++++++++++ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx index 72fa85a26d..d821681fbf 100644 --- a/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx +++ b/site/src/pages/UserSettingsPage/SchedulePage/ScheduleForm.tsx @@ -14,7 +14,7 @@ import MenuItem from "@mui/material/MenuItem"; import { Stack } from "components/Stack/Stack"; import { timeZones, getPreferredTimezone } from "utils/timeZones"; import { Alert } from "components/Alert/Alert"; -import { timeToCron, quietHoursDisplay } from "utils/schedule"; +import { timeToCron, quietHoursDisplay, validTime } from "utils/schedule"; export interface ScheduleFormValues { time: string; @@ -25,7 +25,7 @@ const validationSchema = Yup.object({ time: Yup.string() .ensure() .test("is-time-string", "Time must be in HH:mm format.", (value) => { - if (!/^[0-9][0-9]:[0-9][0-9]$/.test(value)) { + if (!validTime(value)) { return false; } const parts = value.split(":"); @@ -116,13 +116,6 @@ export const ScheduleForm: FC> = ({ - - { ), ); - const expectedCronSchedule = `CRON_TZ=${test.timezone} ${test.minute} ${test.hour} * * *`; renderWithAuth(); await fillForm(test); - const cron = screen.getByLabelText("Cron schedule"); - expect(cron.getAttribute("value")).toEqual(expectedCronSchedule); - await submitForm(); const successMessage = await screen.findByText( "Schedule updated successfully", diff --git a/site/src/utils/schedule.ts b/site/src/utils/schedule.ts index e60cecae6d..fdd1bc1bf3 100644 --- a/site/src/utils/schedule.ts +++ b/site/src/utils/schedule.ts @@ -156,7 +156,14 @@ export const getMaxDeadlineChange = ( extremeDeadline: dayjs.Dayjs, ): number => Math.abs(deadline.diff(extremeDeadline, "hours")); +export const validTime = (time: string): boolean => { + return /^[0-9][0-9]:[0-9][0-9]$/.test(time); +}; + export const timeToCron = (time: string, tz?: string) => { + if (!validTime(time)) { + throw new Error(`Invalid time: ${time}`); + } const [HH, mm] = time.split(":"); let prefix = ""; if (tz) { @@ -170,6 +177,10 @@ export const quietHoursDisplay = ( tz: string, now: Date | undefined, ): string => { + if (!validTime(time)) { + return "Invalid time"; + } + // The cron-parser package doesn't accept a timezone in the cron string, but // accepts it as an option. const cron = timeToCron(time);