|
1 | 1 | import { render, screen } from "@testing-library/react";
|
2 | 2 | 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"; |
4 | 5 | import { RouterProvider, createMemoryRouter } from "react-router-dom";
|
5 | 6 | import dayjs from "dayjs";
|
| 7 | +import { rest } from "msw"; |
6 | 8 | import * as API from "api/api";
|
7 |
| -import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar"; |
| 9 | +import { workspaceByOwnerAndName } from "api/queries/workspaces"; |
8 | 10 | import { ThemeProvider } from "contexts/ThemeProvider";
|
9 | 11 | 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"; |
11 | 14 | 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 | +}; |
12 | 35 |
|
13 | 36 | const BASE_DEADLINE = dayjs().add(3, "hour");
|
14 | 37 |
|
15 | 38 | 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 | + ); |
16 | 56 | render(
|
17 | 57 | <ThemeProvider>
|
18 | 58 | <QueryClientProvider client={new QueryClient()}>
|
19 | 59 | <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 /> }])} |
33 | 61 | />
|
34 | 62 | </QueryClientProvider>
|
35 | 63 | <GlobalSnackbar />
|
|
0 commit comments