Files
ota-admin-portal/src/components/App/App.test.js
John Wu b7e13382c4 CEC-3119 Magna access (#235)
* CEC-3119 Magna access

* Clean up

* Update test provider
2022-11-14 13:30:57 -08:00

174 lines
5.1 KiB
JavaScript

jest.mock("../Contexts/CarUpdatesContext");
jest.mock("../Contexts/FileUploadContext");
jest.mock("../Contexts/VehicleContext");
jest.mock("../Contexts/ManifestsContext");
jest.mock("../Contexts/UserContext");
jest.mock("../../services/monitoring");
jest.mock("../../services/vehiclesAPI");
jest.mock("../../services/superset")
import {
act,
render,
screen,
cleanup,
waitFor,
waitForElementToBeRemoved,
} from "@testing-library/react";
import { setToken } from "../Contexts/UserContext";
import {TEST_AUTH_OBJECT, TEST_AUTH_OBJECT_FISKER} from "../../utils/testing";
import App from ".";
import addSnapshotSerializer from "../../utils/snapshot";
const LOADING_STATUS = "Loading...";
const renderRoute = async (route) => {
window.history.pushState({}, "", route);
const { container } = render(<App />);
if (screen.queryByText(LOADING_STATUS)) {
await waitForElementToBeRemoved(() => screen.getByText(LOADING_STATUS));
}
return container;
};
const check = async (path, selector, compare) => {
let container
await act(async () => {
container = await renderRoute(path);
});
expect(container.querySelector(selector).innerHTML).toEqual(compare);
expect(container).toMatchSnapshot();
};
const sleepAndCheck = async (path, selector, compare) => {
const container = await renderRoute(path);
await waitFor(() => {});
expect(container.querySelector(selector).innerHTML).toEqual(compare);
expect(container).toMatchSnapshot();
};
describe("App", () => {
beforeAll(() => {
addSnapshotSerializer(expect);
}, 60000);
afterEach(() => {
setToken(null);
cleanup();
});
it("Route / unauthenticated", async () => {
await sleepAndCheck("/", "span.MuiButton-label", "Sign In");
});
it("Route /home unauthenticated", async () => {
await sleepAndCheck("/home", "span.MuiButton-label", "Sign In");
});
it("Route /packages unauthenticated", async () => {
await check("/packages", "span.MuiButton-label", "Sign In");
});
it("Route /package-status unauthenticated", async () => {
await check("/package-status/1", "span.MuiButton-label", "Sign In");
});
it("Route /package-deploy unauthenticated", async () => {
await check("/package-deploy/1", "span.MuiButton-label", "Sign In");
});
it("Route /vehicle-add unauthenticated", async () => {
await check("/vehicle-add", "span.MuiButton-label", "Sign In");
});
it("Route /vehicles unauthenticated", async () => {
await check("/vehicles", "span.MuiButton-label", "Sign In");
});
it("Route /vehicle-status unauthenticated", async () => {
await check("/vehicle-status/FISKER123", "span.MuiButton-label", "Sign In");
});
it("Route /vehicle-status/vin/carupdateid unauthenticated", async () => {
await check(
"/vehicle-status/1G1FP87S3GN100062/283",
"span.MuiButton-label",
"Sign In"
);
});
it("Route /supplier/{email} unauthenticated", async () => {
await check(
"/supplier/test@supplier.com",
"span.MuiButton-label",
"Sign In"
);
});
it("Route /tools/certificates/add unauthenticated", async () => {
await check("/tools/certificates/add", "span.MuiButton-label", "Sign In");
});
it("Route /tools/sms/send unauthenticated", async () => {
await check("/tools/sms/send", "span.MuiButton-label", "Sign In");
});
it("Route /page-not-found unauthenticated", async () => {
await check("/page-not-found", "h1", "Page Not Found");
});
it("Route / authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await sleepAndCheck("/", "h6", "Home");
});
it("Route /home authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await sleepAndCheck("/home", "h6", "Home");
});
it("Route /page-not-found authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await check("/page-not-found", "h1", "Page Not Found");
});
it("Route /packages authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await check("/packages", "h6", "Deployments");
});
it("Route /package-status authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await check("/package-status/1", "h6", "Manifest Test Manifest 1.0");
});
it("Route /package-deploy authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await check("/package-deploy/1", "h6", "Deploy Test Manifest 1.0");
});
it("Route /vehicle-add authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await check("/vehicle-add", "h6", "Add Vehicle");
});
it("Route /vehicles authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await check("/vehicles", "h6", "Vehicles");
});
it("Route /vehicle-status authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await check("/vehicle-status/FISKER123", "h6", "Vehicle FISKER123 Details");
});
it("Route /tools/certificates/add authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await sleepAndCheck("/tools/certificates/add", "h6", "Create Certificate");
});
it("Route /tools/sms/send authenticated", async () => {
setToken(TEST_AUTH_OBJECT_FISKER);
await sleepAndCheck("/tools/sms/send", "h6", "Send SMS");
});
});