@momentum-ui/react
Version:
Cisco Momentum UI framework for ReactJs applications
113 lines (96 loc) • 3.85 kB
JavaScript
import React from 'react';
import { shallow, mount } from 'enzyme';
import { MenuItem, SubMenu } from '@momentum-ui/react';
describe('tests for <SubMenu />', () => {
it('should render a SubMenu', () => {
const wrapper = shallow(
<SubMenu label="one">
<MenuItem label="two"/>
</SubMenu>
);
expect(wrapper).toMatchSnapshot();
});
it('when handle customNodeProp', () => {
const wrapper = mount(
<SubMenu customNode={<div className='testNode'>one</div>} isOpen>
<MenuItem label="two"/>
</SubMenu>
);
expect(wrapper.find('.testNode').exists()).toEqual(true);
expect(wrapper.find('.md-menu-item__content').exists()).toEqual(false);
});
it('when SubMenu is open it should display the subMenu', () => {
const wrapper = mount(
<SubMenu label="one" isOpen>
<MenuItem label="two"/>
</SubMenu>
);
const props = wrapper.find('SubMenu').props();
const menuItemProps = wrapper.find('.md-menu-item').first().props();
const listItemProps = wrapper.find('ListItem').first().props();
const eoProps = wrapper.find('EventOverlay').props();
expect(menuItemProps['aria-expanded']).toEqual(true);
expect(menuItemProps['aria-haspopup']).toEqual(true);
expect(listItemProps.active).toEqual(true);
expect(props.isOpen).toEqual(true);
expect(eoProps.direction).toEqual("right-top");
expect(eoProps.closeOnClick).toEqual(false);
expect(wrapper.find('Icon').exists()).toEqual(true);
});
it('should display the selectedValue of the menu if selectedValue prop is set', () => {
const wrapper = mount(
<SubMenu selectedValue="SubMenu" label="one">
<MenuItem label="two"/>
</SubMenu>
);
expect(wrapper.find('.md-menu-item__selected-value').at(0).text()).toEqual("SubMenu");
});
it('should display the contents in the content prop when provided', () => {
const wrapper = mount(
<SubMenu selectedValue="SubMenu" label="one" content={<div>test</div>}>
<MenuItem label="two"/>
</SubMenu>
);
expect(wrapper.find('.md-menu-item__content').at(0).text()).toEqual("test");
expect(wrapper.find('.md-menu-item__content').at(0).text()).toEqual("test");
});
it('when SubMenu is not open it should not display the subMenu', () => {
const wrapper = mount(
<SubMenu label="one">
<MenuItem label="two"/>
</SubMenu>
);
const menuItemProps = wrapper.find('.md-menu-item').first().props();
const listItemProps = wrapper.find('ListItem').first().props();
const eo = wrapper.find('EventOverlay');
expect(menuItemProps['aria-expanded']).toEqual(null);
expect(menuItemProps['aria-haspopup']).toEqual(true);
expect(listItemProps.active).toEqual(null);
expect(eo.exists()).toEqual(false);
});
it('should display the selectedValue of the menu if selectedValue prop is set', () => {
const wrapper = mount(
<SubMenu selectedValue="SubMenu" label="one">
<MenuItem label="two"/>
</SubMenu>
);
expect(wrapper.find('.md-menu-item__selected-value').at(0).text()).toEqual("SubMenu");
});
it('should display the contents in the content prop when provided', () => {
const wrapper = mount(
<SubMenu selectedValue="SubMenu" label="one" content={<div>test</div>}>
<MenuItem label="two"/>
</SubMenu>
);
expect(wrapper.find('.md-menu-item__content').at(0).text()).toEqual("test");
expect(wrapper.find('.md-menu-item__content').at(0).text()).toEqual("test");
});
it('should set ariaLabel of subMenu', () => {
const wrapper = mount(
<SubMenu label="one" isOpen>
<MenuItem label="two"/>
</SubMenu>
);
expect(wrapper.find('.md-event-overlay__children').props().children.props['aria-label']).toEqual("one");
});
});