import React from "react"; import { fireEvent, render } from "@testing-library/react"; import { act } from "@testing-library/react-hooks"; import Steps, { StepsProps } from "../Steps"; import { NEXT_TEXT, BACK_TEXT } from "../StepsConstants"; jest.useFakeTimers(); const stepsContent = [
first
,
second
]; const renderComponent = (props: StepsProps) => { return render(); }; describe("Steps tests", () => { it("call onChangeIndexCallback when click on go back button and it does not disable", () => { const onClickMock = jest.fn(); const steps = renderComponent({ onChangeActiveStep: onClickMock, activeStepIndex: stepsContent.length - 1 }); const backwardButton = steps.getByText(BACK_TEXT); act(() => { fireEvent.click(backwardButton); }); expect(onClickMock.mock.calls.length).toBe(1); }); it("call onChangeIndexCallback when click on go forward button and it does not disable", () => { const onClickMock = jest.fn(); const steps = renderComponent({ onChangeActiveStep: onClickMock, activeStepIndex: 0 }); const forwardButton = steps.getByText(NEXT_TEXT); act(() => { fireEvent.click(forwardButton); }); expect(onClickMock.mock.calls.length).toBe(1); }); it("does not call onChangeIndexCallback when click on back button and when in first page", () => { const onClickMock = jest.fn(); const steps = renderComponent({ onChangeActiveStep: onClickMock, activeStepIndex: 0 }); const backwardButton = steps.getByText(BACK_TEXT); act(() => { fireEvent.click(backwardButton); }); expect(onClickMock.mock.calls.length).toBe(0); }); it("does not call onChangeIndexCallback when click on next button when in last page", () => { const onClickMock = jest.fn(); const steps = renderComponent({ onChangeActiveStep: onClickMock, activeStepIndex: stepsContent.length - 1 }); const forwardButton = steps.getByText(NEXT_TEXT); act(() => { fireEvent.click(forwardButton); }); expect(onClickMock.mock.calls.length).toBe(0); }); });