Skip to content

Commit

Permalink
test: add test coverage for index.tsx
Browse files Browse the repository at this point in the history
- Adds basic tests dependent on potential query results
  • Loading branch information
Mike-Heneghan committed Mar 15, 2024
1 parent 799ea09 commit 4c1a93f
Show file tree
Hide file tree
Showing 2 changed files with 118 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
import { MockedProvider } from "@apollo/client/testing";
import { waitFor } from "@testing-library/react";
import { vanillaStore } from "pages/FlowEditor/lib/store";
import React from "react";
import { axe, setup } from "testUtils";

import Submissions from "./index";
import { mockApplications, mockRequests } from "./mocks";

const { setState } = vanillaStore;

describe("Submissions Component", () => {
test("no results message", async () => {
setState({ flowSlug: "no-results-service", teamSlug: "test-team" });
const { container, getByText } = setup(
<MockedProvider mocks={mockRequests} addTypename={false}>
<Submissions />
</MockedProvider>,
);

expect(getByText("Submissions")).toBeInTheDocument();
expect(
getByText(
"View data on the user submitted applications for this service.",
),
).toBeInTheDocument();

await waitFor(() => {
expect(
getByText("No submitted applications found for this service."),
).toBeInTheDocument();
});

const results = await axe(container);
expect(results).toHaveNoViolations();
});

test("basic view table with expected values", async () => {
setState({ flowSlug: "test-service", teamSlug: "test-team" });
const { container, getByText } = setup(
<MockedProvider mocks={mockRequests} addTypename={false}>
<Submissions />
</MockedProvider>,
);

expect(getByText("Submissions")).toBeInTheDocument();
expect(
getByText(
"View data on the user submitted applications for this service.",
),
).toBeInTheDocument();

await waitFor(() => {
mockApplications.forEach((app) => {
expect(getByText(app.sessionId)).toBeInTheDocument();
});
});

const results = await axe(container);
expect(results).toHaveNoViolations();
});

test("error renders as expected", async () => {
setState({ flowSlug: "error-service", teamSlug: "test-team" });
const { container, getByText } = setup(
<MockedProvider mocks={mockRequests} addTypename={false}>
<Submissions />
</MockedProvider>,
);

expect(getByText("Submissions")).toBeInTheDocument();
expect(
getByText(
"View data on the user submitted applications for this service.",
),
).toBeInTheDocument();

await waitFor(() => {
expect(getByText("An error occurred")).toBeInTheDocument();
});

const results = await axe(container);
expect(results).toHaveNoViolations();
});
});
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { SUBMITTED_APPLICATIONS_QUERY } from "./submissionData";

export const mockApplications = [
{
sessionId: "test-session-3",
Expand Down Expand Up @@ -110,6 +112,34 @@ export const mockApplications = [
},
];

export const mockQueryResult = {
submissionServicesSummary: mockApplications,
};
export const mockRequests = [
{
request: {
query: SUBMITTED_APPLICATIONS_QUERY,
variables: { service_slug: "test-service", team_slug: "test-team" },
},
result: {
data: {
submissionServicesSummary: mockApplications,
},
},
},
{
request: {
query: SUBMITTED_APPLICATIONS_QUERY,
variables: { service_slug: "no-results-service", team_slug: "test-team" },
},
result: {
data: {
submissionServicesSummary: [],
},
},
},
{
request: {
query: SUBMITTED_APPLICATIONS_QUERY,
variables: { service_slug: "error-service", team_slug: "test-team" },
},
error: new Error("An error occurred"),
},
];

0 comments on commit 4c1a93f

Please sign in to comment.