@crossed/ui
Version:
A universal & performant styling library for React Native, Next.js & React
57 lines (56 loc) • 2.37 kB
JavaScript
var import_jsx_runtime = require("react/jsx-runtime");
var import_test = require("@crossed/test");
var import_Root = require("../Root");
var import_context = require("../context");
var import_react = require("react");
jest.mock("../context", () => ({
...jest.requireActual("../context"),
FloatingProvider: jest.fn(() => null)
}));
const FloatingProviderMocked = jest.mocked(import_context.FloatingProvider);
describe("Floating.Root", () => {
const mount = (defaultOpen) => {
const onChange = jest.fn();
const ref = (0, import_react.createRef)();
expect(import_Root.FloatingRoot.displayName).toEqual("Floating");
(0, import_test.render)(
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Root.FloatingRoot, { onChange, defaultValue: defaultOpen, ref })
);
return { ref };
};
afterEach(() => {
FloatingProviderMocked.mockReset();
});
test("verify based props", async () => {
const { ref } = mount();
const call = FloatingProviderMocked.mock.calls[0][0];
expect(call).toHaveProperty("children", void 0);
expect(call).toHaveProperty("closeOverlayPress", true);
expect(call).toHaveProperty("onClose");
expect(call).toHaveProperty("onOpen");
expect(call).toHaveProperty("open", false);
expect(call).toHaveProperty("removeScroll", true);
expect(call).toHaveProperty("wait", 0);
expect(ref.current).toHaveProperty("open");
expect(ref.current).toHaveProperty("close");
});
test("check imperative handle open", async () => {
mount();
expect(FloatingProviderMocked).toHaveBeenCalledTimes(1);
const call = FloatingProviderMocked.mock.calls[0][0];
await (0, import_react.act)(() => Promise.resolve(call.onOpen()));
expect(FloatingProviderMocked).toHaveBeenCalledTimes(2);
const call2 = FloatingProviderMocked.mock.calls[1][0];
expect(call2).toHaveProperty("open", true);
});
test("check imperative handle onClose", async () => {
mount(true);
expect(FloatingProviderMocked).toHaveBeenCalledTimes(1);
const call = FloatingProviderMocked.mock.calls[0][0];
await (0, import_react.act)(() => Promise.resolve(call.onClose()));
expect(FloatingProviderMocked).toHaveBeenCalledTimes(2);
const call2 = FloatingProviderMocked.mock.calls[1][0];
expect(call2).toHaveProperty("open", false);
});
});
//# sourceMappingURL=Root.spec.js.map