Skip to content

Commit 766d030

Browse files
committed
:^)
1 parent 929d70b commit 766d030

File tree

5 files changed

+24
-33
lines changed

5 files changed

+24
-33
lines changed

site/src/components/FileUpload/FileUpload.test.tsx

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
1-
import { fireEvent, render, screen } from "@testing-library/react";
2-
import { ThemeProvider } from "contexts/ThemeProvider";
1+
import { fireEvent, screen } from "@testing-library/react";
32
import { FileUpload } from "./FileUpload";
3+
import { renderComponent } from "testHelpers/renderHelpers";
44

55
test("accepts files with the correct extension", async () => {
66
const onUpload = jest.fn();
77

8-
render(
9-
<ThemeProvider>
10-
<FileUpload
11-
isUploading={false}
12-
onUpload={onUpload}
13-
removeLabel="Remove file"
14-
title="Upload file"
15-
extensions={["tar", "zip"]}
16-
/>
17-
</ThemeProvider>,
8+
renderComponent(
9+
<FileUpload
10+
isUploading={false}
11+
onUpload={onUpload}
12+
removeLabel="Remove file"
13+
title="Upload file"
14+
extensions={["tar", "zip"]}
15+
/>,
1816
);
1917

2018
const dropZone = screen.getByTestId("drop-zone");

site/src/hooks/useClipboard.test.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@
1111
*/
1212
import { act, renderHook, screen } from "@testing-library/react";
1313
import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar";
14-
import { ThemeProvider } from "contexts/ThemeProvider";
14+
import { ThemeOverride } from "contexts/ThemeProvider";
1515
import {
1616
COPY_FAILED_MESSAGE,
1717
HTTP_FALLBACK_DATA_ID,
1818
type UseClipboardInput,
1919
type UseClipboardResult,
2020
useClipboard,
2121
} from "./useClipboard";
22+
import themes, { DEFAULT_THEME } from "theme";
2223

2324
// Need to mock console.error because we deliberately need to trigger errors in
2425
// the code to assert that it can recover from them, but we also don't want them
@@ -121,10 +122,10 @@ function renderUseClipboard<TInput extends UseClipboardInput>(inputs: TInput) {
121122
initialProps: inputs,
122123
wrapper: ({ children }) => (
123124
// Need ThemeProvider because GlobalSnackbar uses theme
124-
<ThemeProvider>
125+
<ThemeOverride theme={themes[DEFAULT_THEME]}>
125126
{children}
126127
<GlobalSnackbar />
127-
</ThemeProvider>
128+
</ThemeOverride>
128129
),
129130
},
130131
);

site/src/pages/UserSettingsPage/AppearancePage/AppearancePage.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ describe("appearance page", () => {
3434

3535
// Check if the API was called correctly
3636
expect(API.updateAppearanceSettings).toBeCalledTimes(1);
37-
expect(API.updateAppearanceSettings).toHaveBeenCalledWith("me", {
37+
expect(API.updateAppearanceSettings).toHaveBeenCalledWith({
3838
theme_preference: "light",
3939
});
4040
});

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

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
1-
import { render, screen } from "@testing-library/react";
1+
import { screen } from "@testing-library/react";
22
import userEvent from "@testing-library/user-event";
33
import { API } from "api/api";
44
import { workspaceByOwnerAndName } from "api/queries/workspaces";
5-
import { GlobalSnackbar } from "components/GlobalSnackbar/GlobalSnackbar";
6-
import { ThemeProvider } from "contexts/ThemeProvider";
75
import dayjs from "dayjs";
86
import { http, HttpResponse } from "msw";
97
import type { FC } from "react";
10-
import { QueryClient, QueryClientProvider, useQuery } from "react-query";
11-
import { RouterProvider, createMemoryRouter } from "react-router-dom";
8+
import { useQuery } from "react-query";
129
import { MockTemplate, MockWorkspace } from "testHelpers/entities";
1310
import { server } from "testHelpers/server";
1411
import { WorkspaceScheduleControls } from "./WorkspaceScheduleControls";
12+
import { render } from "testHelpers/renderHelpers";
1513

1614
const Wrapper: FC = () => {
1715
const { data: workspace } = useQuery(
@@ -45,16 +43,7 @@ const renderScheduleControls = async () => {
4543
});
4644
}),
4745
);
48-
render(
49-
<ThemeProvider>
50-
<QueryClientProvider client={new QueryClient()}>
51-
<RouterProvider
52-
router={createMemoryRouter([{ path: "/", element: <Wrapper /> }])}
53-
/>
54-
</QueryClientProvider>
55-
<GlobalSnackbar />
56-
</ThemeProvider>,
57-
);
46+
render(<Wrapper />);
5847
await screen.findByTestId("schedule-controls");
5948
expect(screen.getByText("Stop in 3 hours")).toBeInTheDocument();
6049
};

site/src/testHelpers/renderHelpers.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
} from "@testing-library/react";
66
import { AppProviders } from "App";
77
import type { ProxyProvider } from "contexts/ProxyContext";
8-
import { ThemeProvider } from "contexts/ThemeProvider";
8+
import { ThemeOverride } from "contexts/ThemeProvider";
99
import { RequireAuth } from "contexts/auth/RequireAuth";
1010
import { DashboardLayout } from "modules/dashboard/DashboardLayout";
1111
import type { DashboardProvider } from "modules/dashboard/DashboardProvider";
@@ -20,6 +20,7 @@ import {
2020
createMemoryRouter,
2121
} from "react-router-dom";
2222
import { MockUser } from "./entities";
23+
import themes, { DEFAULT_THEME } from "theme";
2324

2425
export function createTestQueryClient() {
2526
// Helps create one query client for each test case, to make sure that tests
@@ -245,6 +246,8 @@ export const waitForLoaderToBeRemoved = async (): Promise<void> => {
245246

246247
export const renderComponent = (component: React.ReactElement) => {
247248
return testingLibraryRender(component, {
248-
wrapper: ({ children }) => <ThemeProvider>{children}</ThemeProvider>,
249+
wrapper: ({ children }) => (
250+
<ThemeOverride theme={themes[DEFAULT_THEME]}>{children}</ThemeOverride>
251+
),
249252
});
250253
};

0 commit comments

Comments
 (0)