import * as React from 'react'; import { act, cleanup, render } from '@testing-library/react'; import useEvent from './useDOMSpy'; import { EventProxyProps } from '../components/EventProxy'; describe('hook useEvent', () => { afterEach(cleanup); const Example = ({ width, direction, ...props }: { direction?: string; width: number, } & Partial) => { const [node, EventEmitter] = useEvent(direction as any); const ref = React.useRef(0); ref.current = ref.current + 1; return (
previous sibling_ child_ next sibling_ was rendered {ref.current}
); }; // this stuff doesnt work properly outside the browser =( test('just works, i guess', (finish) => { const { container, rerender } = render( ); expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 1'); finish(); }); test('just works, with child as target', (finish) => { const { container, rerender } = render( ); expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 1'); finish(); }); test('just works, with sibling-previous as target', (finish) => { const { container, rerender } = render( ); expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 1'); finish(); }); test('just works, with sibling-next as target', (finish) => { const { container, rerender } = render( ); expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 1'); finish(); }); test('just works, with parent as target', (finish) => { const { container, rerender } = render( ); expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 1'); finish(); }); test('just works, with selector as target', (finish) => { const { container, rerender } = render( ); expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 1'); finish(); }); test('just works with callbacks', (finish) => { const { container, rerender } = render( console.log('resize', event)} onMutation={(event) => console.log('mutation', event)} onScroll={(event) => console.log('scroll', event)} onBlur={(event) => console.log('blur', event)} onFocus={(event) => console.log('focus', event)} onClick={(event) => console.log('click', event)} onMouseOver={(event) => console.log('hover', event)} onMouseOut={(event) => console.log('mouseout', event)} /> ); expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 1'); finish(); }); test('should rerender if size changed', (finish) => { const { container, rerender } = render(); expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 1'); rerender() expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 2'); finish(); }); test('should call onResize callback', async (finish) => { const onResize = (size: any) => { expect(size).toBe('NaN'); }; const { container, rerender } = render(); expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 1'); rerender() expect(container.textContent).toBe('previous sibling_child_next sibling_was rendered 2'); finish(); }); });