Files
ota-admin-portal/src/components/Contexts/CANSignalsContext.test.jsx
2023-11-07 21:01:02 -08:00

77 lines
1.8 KiB
JavaScript

jest.mock("../../services/vehiclesAPI");
import {
render,
cleanup,
screen,
fireEvent,
waitFor,
act,
} from "@testing-library/react";
import { CANSignalProvider, useCANSignalContext } from "./CANSignalsContext";
const checkSignalsResults = (filters) => {
expect(screen.getByTestId("signals").innerHTML).toEqual(filters);
};
describe("CANSignalsContext", () => {
describe("getSignals", () => {
beforeEach(() => {
jest.useFakeTimers("setInterval");
const TestComp = () => {
const { signals, setVIN, setDelayIndex } = useCANSignalContext();
setDelayIndex(0);
return (
<>
<div data-testid="signals">{JSON.stringify(signals)}</div>
<button
data-testid="getSignals"
onClick={() => { setVIN("TESTVIN1234567890") }}
/>
</>
);
};
render(
<CANSignalProvider>
<TestComp />
</CANSignalProvider>
);
});
afterEach(() => {
jest.useRealTimers();
cleanup();
});
it("initial state", () => {
checkSignalsResults("[]");
});
it("getSignals", async () => {
// eslint-disable-next-line testing-library/no-unnecessary-act
await act(async () => {
fireEvent.click(screen.getByTestId("getSignals"));
await waitFor(() =>
expect(screen.getByTestId("signals").innerHTML).toBe("[]")
);
jest.advanceTimersByTime(3001);
})
await waitFor(() => {
return expect(screen.getByTestId("signals").innerHTML).not.toBe("[]");
});
checkSignalsResults(JSON.stringify(expectedSignalsData));
});
});
});
const expectedSignalsData = [
{
timestamp: "7/14/2021 8:09:40 PM",
signal: "signal",
value: 123
},
];