UNPKG

@crossed/primitive

Version:

A universal & performant styling library for React Native, Next.js & React

78 lines (77 loc) 2.83 kB
import { jsx } from "react/jsx-runtime"; import "@testing-library/jest-dom"; import { Focus, useFocus } from "../Focus.web"; import { View } from "react-native"; import { renderHook, render, screen } from "@crossed/test"; jest.mock("react-focus-lock", () => ({ __esModule: true, useFocusScope: jest.fn().mockImplementation(() => ({ focusNext: jest.fn(), focusPrev: jest.fn() })), default: jest.fn().mockImplementation(({ children }) => children) })); describe("Accordion Focus web", () => { test("Component", async () => { const children = "Pass child"; const ReactFocusLock = jest.requireMock("react-focus-lock"); render(/* @__PURE__ */ jsx(Focus, { testID: "toto", children })); await screen.findByText(children); expect(ReactFocusLock.default).toBeCalledWith( { children, disabled: true, lockProps: { testID: "toto" }, as: View }, {} ); }); test("useFocus", async () => { const onPress = jest.fn(); const { useFocusScope } = jest.requireMock("react-focus-lock"); const focusNext = jest.fn(); const focusPrev = jest.fn(); const stopPropagation = jest.fn(); const preventDefault = jest.fn(); useFocusScope.mockImplementation(() => ({ focusNext, focusPrev })); const { result } = renderHook(() => useFocus({ onPress })); const reset = () => { stopPropagation.mockReset(); preventDefault.mockReset(); focusNext.mockReset(); focusPrev.mockReset(); }; expect(result.current).toHaveProperty(["onKeyDown"]); const params = { stopPropagation, preventDefault }; result.current.onKeyDown(params); expect(stopPropagation).toBeCalledTimes(0); expect(preventDefault).toBeCalledTimes(0); expect(onPress).toBeCalledTimes(0); expect(focusNext).toBeCalledTimes(0); expect(focusPrev).toBeCalledTimes(0); reset(); result.current.onKeyDown({ ...params, code: "ArrowDown" }); expect(stopPropagation).toBeCalledTimes(1); expect(preventDefault).toBeCalledTimes(1); expect(onPress).toBeCalledTimes(0); expect(focusNext).toBeCalledTimes(1); expect(focusPrev).toBeCalledTimes(0); reset(); result.current.onKeyDown({ ...params, code: "ArrowUp" }); expect(stopPropagation).toBeCalledTimes(1); expect(preventDefault).toBeCalledTimes(1); expect(onPress).toBeCalledTimes(0); expect(focusNext).toBeCalledTimes(0); expect(focusPrev).toBeCalledTimes(1); reset(); result.current.onKeyDown({ ...params, code: "Space" }); expect(stopPropagation).toBeCalledTimes(1); expect(preventDefault).toBeCalledTimes(1); expect(onPress).toBeCalledTimes(1); expect(focusNext).toBeCalledTimes(0); expect(focusPrev).toBeCalledTimes(0); reset(); }); }); //# sourceMappingURL=Focus.web.spec.js.map