Skip to content

Commit 201eef6

Browse files
committed
🧪
1 parent 2fe1d45 commit 201eef6

File tree

1 file changed

+44
-16
lines changed

1 file changed

+44
-16
lines changed

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

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,63 @@
11
import { render, screen } from "@testing-library/react";
22
import userEvent from "@testing-library/user-event";
3-
import { QueryClient, QueryClientProvider } from "react-query";
3+
import { type FC } from "react";
4+
import { QueryClient, QueryClientProvider, useQuery } from "react-query";
45
import { RouterProvider, createMemoryRouter } from "react-router-dom";
56
import dayjs from "dayjs";
7+
import { rest } from "msw";
68
import * as API from "api/api";
7-
import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar";
9+
import { workspaceByOwnerAndName } from "api/queries/workspaces";
810
import { ThemeProvider } from "contexts/ThemeProvider";
911
import { MockTemplate, MockWorkspace } from "testHelpers/entities";
10-
import { getWorkspaceActivityStatus } from "modules/workspaces/activity";
12+
import { server } from "testHelpers/server";
13+
import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar";
1114
import { WorkspaceScheduleControls } from "./WorkspaceScheduleControls";
15+
import { getWorkspaceActivityStatus } from "modules/workspaces/activity";
16+
17+
const Wrapper: FC = () => {
18+
const { data: workspace } = useQuery(
19+
workspaceByOwnerAndName(MockWorkspace.owner_name, MockWorkspace.name),
20+
);
21+
22+
if (!workspace) {
23+
return null;
24+
}
25+
26+
return (
27+
<WorkspaceScheduleControls
28+
workspace={workspace}
29+
status={getWorkspaceActivityStatus(workspace)}
30+
template={MockTemplate}
31+
canUpdateSchedule
32+
/>
33+
);
34+
};
1235

1336
const BASE_DEADLINE = dayjs().add(3, "hour");
1437

1538
const renderScheduleControls = async () => {
39+
server.use(
40+
rest.get(
41+
"/api/v2/users/:username/workspace/:workspaceName",
42+
(req, res, ctx) => {
43+
return res(
44+
ctx.status(200),
45+
ctx.json({
46+
...MockWorkspace,
47+
latest_build: {
48+
...MockWorkspace.latest_build,
49+
deadline: BASE_DEADLINE.toISOString(),
50+
},
51+
}),
52+
);
53+
},
54+
),
55+
);
1656
render(
1757
<ThemeProvider>
1858
<QueryClientProvider client={new QueryClient()}>
1959
<RouterProvider
20-
router={createMemoryRouter([
21-
{
22-
path: "/",
23-
element: (
24-
<WorkspaceScheduleControls
25-
workspace={MockWorkspace}
26-
status={getWorkspaceActivityStatus(MockWorkspace)}
27-
template={MockTemplate}
28-
canUpdateSchedule
29-
/>
30-
),
31-
},
32-
])}
60+
router={createMemoryRouter([{ path: "/", element: <Wrapper /> }])}
3361
/>
3462
</QueryClientProvider>
3563
<GlobalSnackbar />

0 commit comments

Comments
 (0)