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(); +}); 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 = ({ );