UNPKG

@wix/design-system

Version:

@wix/design-system

55 lines 2.72 kB
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