/** * @jest-environment jsdom */ import { renderHook } from "@testing-library/react"; import { postOnboardingDeviceModelIdSelector, walletPostOnboardingEntryPointDismissedSelector, } from "../reducer"; import { useAllPostOnboardingActionsCompleted } from "./useAllPostOnboardingActionsCompleted"; import { usePostOnboardingEntryPointVisibleOnWallet } from "./usePostOnboardingEntryPointVisibleOnWallet"; import { DeviceModelId } from "@ledgerhq/types-devices"; jest.mock("react-redux", () => ({ useSelector: fun => fun(), })); jest.mock("../reducer"); jest.mock("./useAllPostOnboardingActionsCompleted"); const mockedUseAllCompleted = jest.mocked(useAllPostOnboardingActionsCompleted); const mockedDismissedSelector = jest.mocked(walletPostOnboardingEntryPointDismissedSelector); const mockedDeviceModelIdSelector = jest.mocked(postOnboardingDeviceModelIdSelector); describe("usePostOnboardingEntryPointVisibleOnWallet", () => { beforeEach(() => { mockedUseAllCompleted.mockClear(); mockedDismissedSelector.mockClear(); mockedDeviceModelIdSelector.mockClear(); }); it("should be false if deviceModelId is null", () => { mockedUseAllCompleted.mockReturnValue(false); mockedDismissedSelector.mockReturnValue(false); mockedDeviceModelIdSelector.mockReturnValue(null); const { result } = renderHook(() => usePostOnboardingEntryPointVisibleOnWallet()); expect(result.current).toBe(false); }); it("should be false if the the entry point HAS been dismissed", () => { mockedDismissedSelector.mockReturnValue(true); mockedDeviceModelIdSelector.mockReturnValue(DeviceModelId.nanoX); mockedUseAllCompleted.mockReturnValue(false); const { result: res1 } = renderHook(() => usePostOnboardingEntryPointVisibleOnWallet()); expect(res1.current).toBe(false); mockedUseAllCompleted.mockReturnValue(true); const { result: res2 } = renderHook(() => usePostOnboardingEntryPointVisibleOnWallet()); expect(res2.current).toBe(false); }); it("should be false if all actions are completed", () => { mockedDismissedSelector.mockReturnValue(false); mockedUseAllCompleted.mockReturnValue(true); mockedDeviceModelIdSelector.mockReturnValue(DeviceModelId.nanoX); const { result } = renderHook(() => usePostOnboardingEntryPointVisibleOnWallet()); expect(result.current).toBe(false); }); it("should be true if the entry point HAS NOT been dismissed and all actions are NOT completed", () => { mockedDismissedSelector.mockReturnValue(false); mockedUseAllCompleted.mockReturnValue(false); mockedDeviceModelIdSelector.mockReturnValue(DeviceModelId.nanoX); const { result } = renderHook(() => usePostOnboardingEntryPointVisibleOnWallet()); expect(result.current).toBe(true); }); });