import { createRef } from 'react'; import { Position } from '..'; import { render } from '../../test-utils'; import Panel from './Panel'; import type { PanelProps } from './Panel'; const mockAnchorRef: React.MutableRefObject = { current: document.createElement('a'), }; describe('Panel', () => { const props = { arrow: true, children:
children
, open: true, position: Position.TOP, anchorRef: mockAnchorRef, onClose: jest.fn(), } satisfies PanelProps; it('renders arrow', () => { const { rerender } = render(); expect(getArrow()).not.toBeInTheDocument(); rerender(); expect(getArrow()).toBeInTheDocument(); }); it('opens/closes Panel based on open', () => { const { rerender } = render(); expect(getPanel()).not.toBeInTheDocument(); rerender(); expect(getPanel()).toBeInTheDocument(); }); it('does not set width for content as width of an anchor (by default)', () => { const anchorReference = createRef(); const panelReference = createRef(); render( <>
Anchor for panel
, ); expect(panelReference.current).toHaveStyle({ width: undefined }); }); it('sets same width for content as width of an anchor (anchorWidth={true})', () => { const anchorReference = createRef(); const panelReference = createRef(); render( <>
Anchor for panel
, ); expect(panelReference.current).toHaveStyle({ width: '0px' }); }); const getPanel = () => document.querySelector('.np-panel--open'); const getArrow = () => document.querySelector('.np-panel__arrow'); });