Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Replace jest mock with vitest mock #4003

Merged
merged 1 commit into from
Nov 22, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import React from "react";
import { act } from "react-dom/test-utils";
import { ErrorBoundary } from "react-error-boundary";
import swr from "swr";
import useSWR from "swr";
import { setup } from "testUtils";
import { vi } from "vitest";
import { axe } from "vitest-axe";
Expand All @@ -21,15 +22,13 @@ const { setState } = useStore;

beforeEach(() => vi.clearAllMocks());

const swrMock = (swr as jest.Mock).mock;

vi.mock("swr", () => ({
default: vi.fn((url: () => string) => {
const isGISRequest = url()?.startsWith(
`${import.meta.env.VITE_APP_API_URL}/gis`
`${import.meta.env.VITE_APP_API_URL}/gis`,
);
const isRoadsRequest = url()?.startsWith(
`${import.meta.env.VITE_APP_API_URL}/roads`
`${import.meta.env.VITE_APP_API_URL}/roads`,
);

if (isGISRequest) return { data: digitalLandResponseMock };
Expand All @@ -50,7 +49,7 @@ describe("error state", () => {
disclaimer="This page does not include information about historic planning conditions that may apply to this property."
handleSubmit={vi.fn()}
/>
</ErrorBoundary>
</ErrorBoundary>,
);

expect(getByTestId("error-summary-invalid-graph")).toBeInTheDocument();
Expand All @@ -66,7 +65,7 @@ describe("error state", () => {
fn="property.constraints.planning"
disclaimer="This page does not include information about historic planning conditions that may apply to this property."
/>
</ErrorBoundary>
</ErrorBoundary>,
);
const results = await axe(container);
expect(results).toHaveNoViolations();
Expand All @@ -82,7 +81,7 @@ describe("following a FindProperty component", () => {
teamIntegrations: {
hasPlanningData: true,
},
})
}),
);
});

Expand All @@ -96,11 +95,11 @@ describe("following a FindProperty component", () => {
fn="property.constraints.planning"
disclaimer="This page does not include information about historic planning conditions that may apply to this property."
handleSubmit={handleSubmit}
/>
/>,
);

expect(
getByRole("heading", { name: "Planning constraints" })
getByRole("heading", { name: "Planning constraints" }),
).toBeInTheDocument();

await user.click(getByTestId("continue-button"));
Expand All @@ -115,7 +114,7 @@ describe("following a FindProperty component", () => {
description="Things that might affect your project"
fn="property.constraints.planning"
disclaimer="This page does not include information about historic planning conditions that may apply to this property."
/>
/>,
);
const results = await axe(container);
expect(results).toHaveNoViolations();
Expand All @@ -129,14 +128,14 @@ describe("following a FindProperty component", () => {
fn="property.constraints.planning"
disclaimer="This page does not include information about historic planning conditions that may apply to this property."
handleSubmit={vi.fn()}
/>
/>,
);

expect(swr).toHaveBeenCalled();

// Planning data is called first
const swrURL = swrMock.calls[0][0]();
const swrResponse = swrMock.results[0].value;
const swrURL = (vi.mocked(useSWR).mock.calls[0][0] as () => {})();
const swrResponse = vi.mocked(useSWR).mock.results[0].value;

expect(swrURL).toContain("/gis");
expect(swrResponse).toEqual({ data: digitalLandResponseMock });
Expand All @@ -150,14 +149,14 @@ describe("following a FindProperty component", () => {
fn="property.constraints.planning"
disclaimer="This page does not include information about historic planning conditions that may apply to this property."
handleSubmit={vi.fn()}
/>
/>,
);

expect(swr).toHaveBeenCalled();

// Classified roads are called second
const swrURL = swrMock.calls[1][0]();
const swrResponse = swrMock.results[1].value;
const swrURL = (vi.mocked(useSWR).mock.calls[1][0] as () => {})();
const swrResponse = vi.mocked(useSWR).mock.results[1].value;

expect(swrURL).toContain("/roads");
expect(swrResponse).toEqual({ data: classifiedRoadsResponseMock });
Expand All @@ -171,7 +170,7 @@ describe("following a FindProperty component", () => {
teamIntegrations: {
hasPlanningData: true,
},
})
}),
);

setup(
Expand All @@ -181,23 +180,25 @@ describe("following a FindProperty component", () => {
fn="property.constraints.planning"
disclaimer="This page does not include information about historic planning conditions that may apply to this property."
handleSubmit={vi.fn()}
/>
/>,
);

expect(swr).toHaveBeenCalled();

// Planning constraints API still called
const planingConstraintsURL = swrMock.calls[0][0]();
const planingConstraintsResponse = swrMock.results[0].value;
const planingConstraintsURL = (
vi.mocked(useSWR).mock.calls[0][0] as () => {}
)();
const planingConstraintsResponse = vi.mocked(useSWR).mock.results[0].value;

expect(planingConstraintsURL).toContain("/gis");
expect(planingConstraintsResponse).toEqual({
data: digitalLandResponseMock,
});

// Classified roads API not called due to missing USRN
const swrURL = swrMock.calls[1][0]();
const swrResponse = swrMock.results[1].value;
const swrURL = (vi.mocked(useSWR).mock.calls[1][0] as () => {})();
const swrResponse = vi.mocked(useSWR).mock.results[1].value;

expect(swrURL).toBeNull();
expect(swrResponse).toEqual({ data: null });
Expand All @@ -211,12 +212,12 @@ describe("following a FindProperty component", () => {
fn="property.constraints.planning"
disclaimer="This page does not include information about historic planning conditions that may apply to this property."
handleSubmit={vi.fn()}
/>
/>,
);

// Positive constraints visible by default
expect(
getByRole("heading", { name: /These are the planning constraints/ })
getByRole("heading", { name: /These are the planning constraints/ }),
).toBeVisible();
expect(getByRole("button", { name: /Parks and gardens/ })).toBeVisible();

Expand All @@ -227,7 +228,7 @@ describe("following a FindProperty component", () => {
expect(showNegativeConstraintsButton).toBeVisible();

const negativeConstraintsContainer = getByTestId(
"negative-constraints-list"
"negative-constraints-list",
);
expect(negativeConstraintsContainer).not.toBeVisible();

Expand All @@ -248,12 +249,12 @@ describe("following a FindProperty component", () => {
description="Things that might affect your project"
fn="property.constraints.planning"
handleSubmit={vi.fn()}
/>
/>,
);
expect(
queryByText(
"This page does not include information about historic planning conditions that may apply to this property."
)
"This page does not include information about historic planning conditions that may apply to this property.",
),
).toBeVisible();
});
});
Expand All @@ -268,7 +269,7 @@ describe("demo state", () => {
hasPlanningData: false,
},
teamSlug: "demo",
})
}),
);
});
it("should render an error when teamSlug is demo", async () => {
Expand All @@ -282,21 +283,21 @@ describe("demo state", () => {
disclaimer="This page does not include information about historic planning conditions that may apply to this property."
handleSubmit={handleSubmit}
/>
</ErrorBoundary>
</ErrorBoundary>,
);

const errorMessage = queryByText(
"Planning Constraints are not enabled for demo users"
"Planning Constraints are not enabled for demo users",
);
expect(errorMessage).toBeVisible();

// Check planning constraints has not rendered
// reused positive constraints from basic layout test
expect(
queryByRole("heading", { name: /These are the planning constraints/ })
queryByRole("heading", { name: /These are the planning constraints/ }),
).not.toBeInTheDocument();
expect(
queryByRole("button", { name: /Parks and gardens/ })
queryByRole("button", { name: /Parks and gardens/ }),
).not.toBeInTheDocument();

// Ensure a demo user can continue on in the application
Expand Down
Loading