@crossed/primitive
Version:
A universal & performant styling library for React Native, Next.js & React
79 lines (78 loc) • 3 kB
JavaScript
;
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