@retailmenot/anchor
Version:
A React UI Library by RetailMeNot
50 lines • 2.69 kB
JavaScript
// VENDOR
import * as React from 'react';
import * as renderer from 'react-test-renderer';
import { shallow, mount } from 'enzyme';
import { ThemeProvider } from '@xstyled/styled-components';
// ANCHOR
import { RootTheme } from '../theme';
import { DropDown } from './DropDown.component';
describe('Component: DropDown', () => {
test('should render in the DOM', () => {
const subject = (React.createElement(ThemeProvider, { theme: RootTheme },
React.createElement(DropDown, { overlay: React.createElement("div", null, "1") })));
const component = shallow(subject);
expect(subject).toBeDefined();
expect(component).toBeDefined();
const tree = renderer.create(subject).toJSON();
expect(tree).toMatchSnapshot();
});
test('should toggle when clicked', () => {
const subject = React.createElement(DropDown, { overlay: React.createElement("div", null, "1") });
const wrapper = mount(subject);
wrapper.setState({ clicked: true });
expect(wrapper.find('div.anchor-drop-down-container.active')).toBeDefined();
wrapper.setState({ clicked: false });
expect(wrapper.find('div.anchor-drop-down-container.active').exists()).toBeFalsy();
});
test('should fire onTriggered with correct type when clicked', () => {
const onTrigMock = jest.fn();
const subject = (React.createElement(DropDown, { overlay: React.createElement("div", null, "1"), trigger: "click", onTriggered: onTrigMock }));
const wrapper = mount(subject);
wrapper.getDOMNode().dispatchEvent(new MouseEvent('click'));
expect(onTrigMock).toHaveBeenCalledWith(true, 'click');
});
test('should fire onTriggered with correct type when hovered', () => {
const onTrigMock = jest.fn();
const subject = (React.createElement(DropDown, { overlay: React.createElement("div", null, "1"), trigger: "hover", onTriggered: onTrigMock }));
const wrapper = mount(subject);
wrapper.getDOMNode().dispatchEvent(new MouseEvent('mouseenter'));
expect(onTrigMock).toHaveBeenCalledWith(true, 'hover');
});
test('should fire onTriggered with false when clicked twice', () => {
const onTrigMock = jest.fn();
const subject = (React.createElement(DropDown, { overlay: React.createElement("div", null, "1"), trigger: "click", onTriggered: onTrigMock }));
const wrapper = mount(subject);
wrapper.setState({ clicked: true });
wrapper.getDOMNode().dispatchEvent(new MouseEvent('click'));
expect(onTrigMock).toHaveBeenCalledWith(false, 'click');
});
});
//# sourceMappingURL=DropDown.component.spec.js.map