import { renderHook } from "@testing-library/react-native"; import { useCurrentScreenIsStartupHook } from "../useCurrentScreenIsStartupHook"; import { useNavigation } from "@applicaster/zapp-react-native-utils/reactHooks"; import { isFilledArray } from "@applicaster/zapp-react-native-utils/arrayUtils"; jest.mock("@applicaster/zapp-react-native-utils/reactHooks"); jest.mock("@applicaster/zapp-react-native-utils/arrayUtils"); const mockUseNavigation = useNavigation as jest.Mock; const mockIsFilledArray = isFilledArray as jest.Mock; describe("useCurrentScreenIsStartupHook", () => { beforeEach(() => { jest.clearAllMocks(); }); it("returns true when startUpHooks is a filled array", () => { mockUseNavigation.mockReturnValue({ startUpHooks: ["hook1"], }); mockIsFilledArray.mockReturnValue(true); const { result } = renderHook(() => useCurrentScreenIsStartupHook()); expect(result.current).toBe(true); expect(mockIsFilledArray).toHaveBeenCalledWith(["hook1"]); }); it('returns true when startUpHooks is "in_process"', () => { mockUseNavigation.mockReturnValue({ startUpHooks: "in_process", }); mockIsFilledArray.mockReturnValue(false); const { result } = renderHook(() => useCurrentScreenIsStartupHook()); expect(result.current).toBe(true); expect(mockIsFilledArray).toHaveBeenCalledWith("in_process"); }); it("returns false when startUpHooks is empty array", () => { mockUseNavigation.mockReturnValue({ startUpHooks: [], }); mockIsFilledArray.mockReturnValue(false); const { result } = renderHook(() => useCurrentScreenIsStartupHook()); expect(result.current).toBe(false); expect(mockIsFilledArray).toHaveBeenCalledWith([]); }); it("returns false when startUpHooks is undefined", () => { mockUseNavigation.mockReturnValue({ startUpHooks: undefined, }); mockIsFilledArray.mockReturnValue(false); const { result } = renderHook(() => useCurrentScreenIsStartupHook()); expect(result.current).toBe(false); expect(mockIsFilledArray).toHaveBeenCalledWith(undefined); }); it("returns false when startUpHooks is null", () => { mockUseNavigation.mockReturnValue({ startUpHooks: null, }); mockIsFilledArray.mockReturnValue(false); const { result } = renderHook(() => useCurrentScreenIsStartupHook()); expect(result.current).toBe(false); expect(mockIsFilledArray).toHaveBeenCalledWith(null); }); it("prioritizes filled array over string comparison", () => { mockUseNavigation.mockReturnValue({ startUpHooks: ["hook1"], }); mockIsFilledArray.mockReturnValue(true); const { result } = renderHook(() => useCurrentScreenIsStartupHook()); expect(result.current).toBe(true); }); });