From 7a3d5f8f5a5c3eea5701e561f93a0118613f50c9 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Wed, 7 Feb 2024 16:43:05 +0000 Subject: [PATCH 1/2] fix(site): enable submit when auto start and stop are both disabled --- .../WorkspaceSchedulePage/WorkspaceScheduleForm.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx index 22f9b8f836243..57866aacbc062 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.tsx @@ -441,10 +441,9 @@ export const WorkspaceScheduleForm: FC = ({ ); From 637d9073e1cd83c091bcef89f860a88e304cb762 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Wed, 7 Feb 2024 16:55:55 +0000 Subject: [PATCH 2/2] Fix tests and forward ref warning --- site/src/components/Badges/Badges.tsx | 16 +++++++-- .../WorkspaceScheduleForm.stories.tsx | 10 ++++++ .../WorkspaceScheduleForm.test.tsx | 34 +++++++++++++++++++ 3 files changed, 57 insertions(+), 3 deletions(-) diff --git a/site/src/components/Badges/Badges.tsx b/site/src/components/Badges/Badges.tsx index 8473b62e1e0c3..db2917c616c98 100644 --- a/site/src/components/Badges/Badges.tsx +++ b/site/src/components/Badges/Badges.tsx @@ -1,4 +1,9 @@ -import type { PropsWithChildren, FC } from "react"; +import { + type PropsWithChildren, + type FC, + forwardRef, + HTMLAttributes, +} from "react"; import Tooltip from "@mui/material/Tooltip"; import { type Interpolation, type Theme } from "@emotion/react"; import { Stack } from "components/Stack/Stack"; @@ -74,9 +79,14 @@ export const NotReachableBadge: FC = () => { ); }; -export const DisabledBadge: FC = () => { +export const DisabledBadge: FC = forwardRef< + HTMLSpanElement, + HTMLAttributes +>((props, ref) => { return ( ({ @@ -89,7 +99,7 @@ export const DisabledBadge: FC = () => { Disabled ); -}; +}); export const EnterpriseBadge: FC = () => { return ( diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx index ec028498053b1..4efc0c3f2df7b 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.stories.tsx @@ -105,3 +105,13 @@ export const Loading: Story = { isLoading: true, }, }; + +export const AutoStopAndStartOff: Story = { + args: { + initialValues: { + ...defaultInitialValues, + autostartEnabled: false, + autostopEnabled: false, + }, + }, +}; diff --git a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx index 889905b2f41b2..31d8d89637dc0 100644 --- a/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx +++ b/site/src/pages/WorkspaceSettingsPage/WorkspaceSchedulePage/WorkspaceScheduleForm.test.tsx @@ -379,3 +379,37 @@ describe("templateInheritance", () => { expect(ttlInput).toBeDisabled(); }); }); + +test("form should be enabled when both auto stop and auto start features are disabled, given that the template permits these actions", async () => { + jest.spyOn(API, "getTemplateByName").mockResolvedValue(MockTemplate); + render( + , + ); + + const submitButton = await screen.findByRole("button", { name: "Submit" }); + expect(submitButton).toBeEnabled(); +}); + +test("form should be disabled when both auto stop and auto start features are disabled at template level", async () => { + jest.spyOn(API, "getTemplateByName").mockResolvedValue(MockTemplate); + render( + , + ); + + const submitButton = await screen.findByRole("button", { name: "Submit" }); + expect(submitButton).toBeDisabled(); +});