UNPKG

@crossed/primitive

Version:

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

79 lines (78 loc) 3 kB
"use strict"; var import_jsx_runtime = require("react/jsx-runtime"); var import_jest_dom = require("@testing-library/jest-dom"); var import_Focus = require("../Focus.web"); var import_react_native = require("react-native"); var import_test = require("@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"); (0, import_test.render)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Focus.Focus, { testID: "toto", children })); await import_test.screen.findByText(children); expect(ReactFocusLock.default).toBeCalledWith( { children, disabled: true, lockProps: { testID: "toto" }, as: import_react_native.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 } = (0, import_test.renderHook)(() => (0, import_Focus.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