UNPKG

@momentum-ui/react

Version:

Cisco Momentum UI framework for ReactJs applications

289 lines (249 loc) 7.96 kB
import React from 'react'; import { shallow, mount } from 'enzyme'; import { Button, EventOverlay, Popover } from '@momentum-ui/react'; describe('tests for <EventOverlay />', () => { beforeAll(() => { jest.clearAllTimers(); jest.useFakeTimers(); }); it('should match text SnapShot', () => { const props = { anchorNode: <div /> }; const container = shallow( <EventOverlay {...props}> <span>Test</span> </EventOverlay> ); expect(container).toMatchSnapshot(); }); describe('should set classes for', () => { const content = ( <span className="popover-content" key="1">Hello how are you doing</span> ); it('top-center direction', () => { const container = mount( <Popover direction="top-center" showArrow content={content} popoverTrigger={'MouseEnter'} > <button tabIndex={0} className="anchor">Hello</button> </Popover> ); container.find('.anchor').simulate('mouseenter'); jest.runAllTimers(); container.update(); expect(container.find('.md-event-overlay--top').length).toEqual(1); expect(container.find('.md-event-overlay--arrow').length).toEqual(1); }); it('bottom-center direction', () => { const container = mount( <Popover direction="bottom-center" showArrow content={content} popoverTrigger={'MouseEnter'} > <button tabIndex={0} className="anchor">Hello</button> </Popover> ); container.find('.anchor').simulate('mouseenter'); jest.runAllTimers(); container.update(); expect(container.find('.md-event-overlay--bottom').length).toEqual(1); }); it('left-center direction', () => { const container = mount( <Popover direction="left-center" showArrow content={content} popoverTrigger={'MouseEnter'} > <button tabIndex={0} className="anchor">Hello</button> </Popover> ); container.find('.anchor').simulate('mouseenter'); jest.runAllTimers(); container.update(); expect(container.find('.md-event-overlay--left').length).toEqual(1); }); it('right-center direction', () => { const container = mount( <Popover direction="right-center" showArrow content={content} popoverTrigger={'MouseEnter'} > <button tabIndex={0} className="anchor">Hello</button> </Popover> ); container.find('.anchor').simulate('mouseenter'); jest.runAllTimers(); container.update(); expect(container.find('.md-event-overlay--right').length).toEqual(1); }); }); it('on click outside, should close the popover', () => { const content = ( <span className="popover-content" key="1">Hello how are you doing</span> ); const container = mount( <div className="wrapper"> <Popover allowClickAway direction="top-center" showArrow content={content} popoverTrigger={'Click'} > <button tabIndex={0} className="anchor">Hello</button> </Popover> </div> ); container.find('button').simulate('click'); jest.runAllTimers(); container.update(); expect(container.find('.md-event-overlay--top').length).toEqual(1); // making a click outside container.childAt(0).childAt(1).instance().handleAllowClickAway({}); jest.runAllTimers(); container.update(); expect(container.find('.md-event-overlay--top').length).toEqual(0); }); it('on focus outside, should close the popover', () => { const content = ( <span className="popover-content" key="1">Hello how are you doing</span> ); const container = mount( <div className="wrapper"> <Popover allowClickAway direction="top-center" showArrow content={content} popoverTrigger={'Focus'} > <button tabIndex={0} className="anchor">Hello</button> </Popover> </div> ); container.find('.anchor').simulate('focus'); jest.runAllTimers(); container.update(); expect(container.find('.md-event-overlay--top').length).toEqual(1); // when tabbed out of the Overlay container.childAt(0).childAt(1).instance().handleAllowClickAway({}); expect(container.find('.md-event-overlay--top').length).toEqual(1); }); it('on closing the popover, show not focus back on the trigger if onMouseEnter present', () => { const container = mount( <div className="wrapper"> <Popover allowClickAway direction="top-center" showArrow content={'test'} popoverTrigger={'MouseEnter'} > <Button ariaLabel='Hello'>Hello</Button> </Popover> </div> ); container.find('Button').simulate('mouseenter'); jest.runAllTimers(); container.update(); // when tabbed out of the Overlay container.childAt(0).childAt(1).instance().handleAllowClickAway({}); expect(document.activeElement.type).toEqual(undefined); }); it('on closing the popover, show not focus back on the trigger if onFocus present', () => { const container = mount( <div className="wrapper"> <Popover allowClickAway direction="top-center" showArrow content={'test'} popoverTrigger={'Focus'} > <Button ariaLabel='Hello'>Hello</Button> </Popover> </div> ); container.find('Button').simulate('focus'); jest.runAllTimers(); container.update(); // when tabbed out of the Overlay container.childAt(0).childAt(1).instance().handleAllowClickAway({}); expect(document.activeElement.type).toEqual(undefined); }); it('on closing the popover, show focus back on the trigger if onClick present', () => { const container = mount( <div className="wrapper"> <Popover allowClickAway direction="top-center" showArrow content={'test'} popoverTrigger={'Click'} > <Button ariaLabel='Hello'>Hello</Button> </Popover> </div> ); container.find('Button').simulate('click'); jest.runAllTimers(); container.update(); // when tabbed out of the Overlay container.childAt(0).childAt(1).instance().handleAllowClickAway({}); expect('button').toEqual(document.activeElement.type); }); it('should handle maxHeight prop', () => { const content = ( <span className="popover-content" key="1">Hello how are you doing</span> ); const container = mount( <Popover direction="top-center" showArrow content={content} popoverTrigger={'MouseEnter'} maxHeight={300} > <button tabIndex={0} className="anchor">Hello</button> </Popover> ); container.find('.anchor').simulate('mouseenter'); jest.runAllTimers(); container.update(); expect(container.find('.md-event-overlay__children').get(0).props.style).toHaveProperty('maxHeight', '300px'); }); it('should handle maxWidth prop', () => { const content = ( <span className="popover-content" key="1">Hello how are you doing</span> ); const container = mount( <Popover direction="top-center" showArrow content={content} popoverTrigger={'MouseEnter'} maxWidth={300} > <button tabIndex={0} className="anchor">Hello</button> </Popover> ); container.find('.anchor').simulate('mouseenter'); jest.runAllTimers(); container.update(); expect(container.find('.md-event-overlay__children').get(0).props.style).toHaveProperty('maxWidth', '300px'); }); });