Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3c353b4

Browse files
committed
hi
1 parent 1f9020e commit 3c353b4

File tree

3 files changed

+27
-44
lines changed

3 files changed

+27
-44
lines changed

site/src/pages/WorkspacePage/WorkspaceScheduleControls.test.tsx

Lines changed: 10 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,27 @@
11
import { render, screen } from "@testing-library/react";
2-
import { ThemeProvider } from "contexts/ThemeProvider";
3-
import { QueryClient, QueryClientProvider, useQuery } from "react-query";
4-
import { MockWorkspace } from "testHelpers/entities";
5-
import { WorkspaceScheduleControls } from "./WorkspaceScheduleControls";
6-
import { workspaceByOwnerAndName } from "api/queries/workspaces";
2+
import { QueryClient, QueryClientProvider } from "react-query";
73
import { RouterProvider, createMemoryRouter } from "react-router-dom";
84
import userEvent from "@testing-library/user-event";
9-
import { server } from "testHelpers/server";
10-
import { rest } from "msw";
115
import dayjs from "dayjs";
126
import * as API from "api/api";
137
import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar";
8+
import { ThemeProvider } from "contexts/ThemeProvider";
9+
import { MockTemplate, MockWorkspace } from "testHelpers/entities";
10+
import { WorkspaceScheduleControls } from "./WorkspaceScheduleControls";
1411

1512
const Wrapper = () => {
16-
const { data: workspace } = useQuery(
17-
workspaceByOwnerAndName(MockWorkspace.owner_name, MockWorkspace.name),
13+
return (
14+
<WorkspaceScheduleControls
15+
workspace={MockWorkspace}
16+
template={MockTemplate}
17+
canUpdateSchedule
18+
/>
1819
);
19-
20-
if (!workspace) {
21-
return null;
22-
}
23-
24-
return <WorkspaceScheduleControls workspace={workspace} canUpdateSchedule />;
2520
};
2621

2722
const BASE_DEADLINE = dayjs().add(3, "hour");
2823

2924
const renderScheduleControls = async () => {
30-
server.use(
31-
rest.get(
32-
"/api/v2/users/:username/workspace/:workspaceName",
33-
(req, res, ctx) => {
34-
return res(
35-
ctx.status(200),
36-
ctx.json({
37-
...MockWorkspace,
38-
latest_build: {
39-
...MockWorkspace.latest_build,
40-
deadline: BASE_DEADLINE.toISOString(),
41-
},
42-
}),
43-
);
44-
},
45-
),
46-
);
4725
render(
4826
<ThemeProvider>
4927
<QueryClientProvider client={new QueryClient()}>

site/src/pages/WorkspacePage/WorkspaceScheduleControls.tsx

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
import { type Interpolation, type Theme } from "@emotion/react";
2-
import Link, { LinkProps } from "@mui/material/Link";
2+
import Link, { type LinkProps } from "@mui/material/Link";
3+
import IconButton from "@mui/material/IconButton";
4+
import RemoveIcon from "@mui/icons-material/RemoveOutlined";
5+
import AddIcon from "@mui/icons-material/AddOutlined";
6+
import Tooltip from "@mui/material/Tooltip";
7+
import { visuallyHidden } from "@mui/utils";
8+
import { Dayjs } from "dayjs";
39
import { forwardRef, type FC, useRef } from "react";
10+
import { useMutation, useQueryClient } from "react-query";
411
import { Link as RouterLink } from "react-router-dom";
512
import { isWorkspaceOn } from "utils/workspace";
6-
import type { Workspace } from "api/typesGenerated";
13+
import type { Template, Workspace } from "api/typesGenerated";
714
import {
815
autostartDisplay,
916
autostopDisplay,
@@ -12,28 +19,22 @@ import {
1219
getMaxDeadlineChange,
1320
getMinDeadline,
1421
} from "utils/schedule";
15-
import IconButton from "@mui/material/IconButton";
16-
import RemoveIcon from "@mui/icons-material/RemoveOutlined";
17-
import AddIcon from "@mui/icons-material/AddOutlined";
18-
import Tooltip from "@mui/material/Tooltip";
19-
import _ from "lodash";
2022
import { getErrorMessage } from "api/errors";
2123
import {
2224
updateDeadline,
2325
workspaceByOwnerAndNameKey,
2426
} from "api/queries/workspaces";
2527
import { displayError, displaySuccess } from "components/GlobalSnackbar/utils";
26-
import { useMutation, useQueryClient } from "react-query";
27-
import { Dayjs } from "dayjs";
28-
import { visuallyHidden } from "@mui/utils";
2928

3029
export interface WorkspaceScheduleControlsProps {
3130
workspace: Workspace;
31+
template: Template;
3232
canUpdateSchedule: boolean;
3333
}
3434

3535
export const WorkspaceScheduleControls: FC<WorkspaceScheduleControlsProps> = ({
3636
workspace,
37+
template,
3738
canUpdateSchedule,
3839
}) => {
3940
const queryClient = useQueryClient();
@@ -90,7 +91,7 @@ export const WorkspaceScheduleControls: FC<WorkspaceScheduleControlsProps> = ({
9091
return (
9192
<div css={styles.scheduleValue} data-testid="schedule-controls">
9293
{isWorkspaceOn(workspace) ? (
93-
<AutoStopDisplay workspace={workspace} />
94+
<AutoStopDisplay workspace={workspace} template={template} />
9495
) : (
9596
<ScheduleSettingsLink>
9697
Starts at {autostartDisplay(workspace.autostart_schedule)}
@@ -133,11 +134,14 @@ export const WorkspaceScheduleControls: FC<WorkspaceScheduleControlsProps> = ({
133134

134135
interface AutoStopDisplayProps {
135136
workspace: Workspace;
137+
template: Template;
136138
}
137139

138-
const AutoStopDisplay: FC<AutoStopDisplayProps> = ({ workspace }) => {
140+
const AutoStopDisplay: FC<AutoStopDisplayProps> = ({ workspace, template }) => {
139141
const display = autostopDisplay(workspace);
140142

143+
console.log(template.autostop_requirement);
144+
141145
if (display.tooltip) {
142146
return (
143147
<Tooltip title={display.tooltip}>

site/src/pages/WorkspacePage/WorkspaceTopbar.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ export const WorkspaceTopbar: FC<WorkspaceProps> = ({
228228
</TopbarIcon>
229229
<WorkspaceScheduleControls
230230
workspace={workspace}
231+
template={template}
231232
canUpdateSchedule={canUpdateWorkspace}
232233
/>
233234
</TopbarData>

0 commit comments

Comments
 (0)