@wix/design-system
Version:
@wix/design-system
55 lines • 2.72 kB
JavaScript
import React, { useEffect } from 'react';
import { renderHook, render } from '@testing-library/react';
import { useOverlayScrollbar } from '../useOverlayScrollbar';
vi.mock('../useOverlayScrollbar.st.css', () => ({
st: () => 'mocked-class',
classes: {
root: 'mocked-root-class',
},
}));
describe('useOverlayScrollbar', () => {
it('sanity check', async () => {
const { result } = renderHook(() => useOverlayScrollbar());
const [OverlayScrollbarHostElement, OverlayScrollbarContentElement] = result.current;
expect(typeof OverlayScrollbarHostElement).toBe('function');
// forwardRef makes it return object instead of function
expect(typeof OverlayScrollbarContentElement).toBe('object');
});
});
describe('Host and Content Elements', () => {
it.skip('should render', async () => {
const { result } = renderHook(() => useOverlayScrollbar());
const [OverlayScrollbarHostElement, OverlayScrollbarContentElement] = result.current;
const { container } = render(React.createElement(OverlayScrollbarHostElement, null,
React.createElement(OverlayScrollbarContentElement, null, "content")));
expect(container).toMatchSnapshot();
});
it.skip('should work after rerendering child', async () => {
const { result } = renderHook(() => useOverlayScrollbar());
const [OverlayScrollbarHostElement, OverlayScrollbarContentElement] = result.current;
const { container, rerender } = render(React.createElement(OverlayScrollbarHostElement, null,
React.createElement(OverlayScrollbarContentElement, null, "content")));
rerender(React.createElement(OverlayScrollbarHostElement, null,
React.createElement(OverlayScrollbarContentElement, null, "new content")));
expect(container).toMatchSnapshot();
});
it('should keep children mounted during a re-render', () => {
const onUnmount = vi.fn();
const Child = () => {
useEffect(() => {
return onUnmount;
}, []);
return null;
};
const Component = () => {
const [OverlayScrollbarHostElement, OverlayScrollbarContentElement] = useOverlayScrollbar();
return (React.createElement(OverlayScrollbarHostElement, null,
React.createElement(OverlayScrollbarContentElement, null,
React.createElement(Child, null))));
};
const { rerender } = render(React.createElement(Component, null));
rerender(React.createElement(Component, null));
expect(onUnmount).not.toHaveBeenCalled();
});
});
//# sourceMappingURL=useOverlayScrollbar.spec.js.map