import * as React from "react";
import { render } from "reakit-test-utils";
import { CompositeGroupProps, CompositeGroup } from "../CompositeGroup";
const props: CompositeGroupProps = {
registerGroup: jest.fn(),
unregisterGroup: jest.fn(),
};
test("render", () => {
const { container } = render();
expect(container).toMatchInlineSnapshot(`
`);
});
test("render without state props", () => {
// @ts-ignore
const { container } = render();
expect(container).toMatchInlineSnapshot(`
`);
});
test("do not re-render if group is not the current or the previous active one", () => {
const onRender = jest.fn();
const items = [
{ id: "item-1", groupId: "group-1", ref: React.createRef() },
{ id: "item-2", groupId: "group-2", ref: React.createRef() },
{ id: "item-3", groupId: "group-3", ref: React.createRef() },
];
const Test = React.memo((groupProps: CompositeGroupProps) => {
React.useEffect(onRender);
return ;
}, CompositeGroup.unstable_propsAreEqual);
const { rerender } = render();
expect(onRender).toHaveBeenCalledTimes(1);
rerender();
expect(onRender).toHaveBeenCalledTimes(2);
rerender();
expect(onRender).toHaveBeenCalledTimes(3);
rerender();
expect(onRender).toHaveBeenCalledTimes(3);
rerender();
expect(onRender).toHaveBeenCalledTimes(4);
rerender();
expect(onRender).toHaveBeenCalledTimes(5);
});