predix-ui
Version:
px-* web components as React styled components
71 lines (63 loc) • 2.07 kB
JavaScript
import renderer from 'react-test-renderer';
import React from 'react';
import { shallow, mount } from 'enzyme';
import sinon from 'sinon';
import Dropdown from './';
const items = [
{"key":"1","val":"iPhone"},
{"key":"2","val":"Android"},
{"key":"3","val":"Blackberry"},
{"key":"4","val":"Windows Phone"},
{"key":"5","val":"Flip Phone","disabled":true}
];
describe('Dropdown', () => {
test('should render', () =>{
const wrapper = shallow(
<Dropdown/>
);
expect(wrapper.find('.px-dropdown')).toHaveLength(1);
});
test('matches snapshot', () => {
const tree = renderer.create(
<Dropdown
displayValue='My Val'
buttonStyle='default'
items={items} />
).toJSON();
expect(tree).toMatchSnapshot();
});
test('should render with items', () =>{
const wrapper = shallow(
<Dropdown items={items}/>
);
expect(wrapper.find('.px-button')).toHaveLength(1);
expect(wrapper.find('.px-dropdown__option')).toHaveLength(items.length);
});
test('should close when close icon clicked', () =>{
const wrapper = shallow(
<Dropdown items={items}/>
);
wrapper.setState({opened: true});
//expect(wrapper.find({icon: 'px-utl:chevron'})).toHaveLength(1);
});
test('should clear selected when px-utl-close is clicked', () =>{
const wrapper = mount(
<Dropdown items={items} selected={1}/>
);
expect(wrapper.state().selected).toEqual(1);
//expect(wrapper.find({icon: 'px-utl:chevron'})).toHaveLength(1);
});
test('should trigger onChange when item is changed', () =>{
let spy = sinon.spy();
const wrapper = shallow(
<Dropdown items={items} onChange={spy} />
);
expect(wrapper.find('.px-button')).toHaveLength(1);
expect(wrapper.find('.px-dropdown__option')).toHaveLength(items.length);
wrapper.find('[data-val="iPhone"]').simulate('click');
console.log(wrapper.state());
//console.log(spy.getCalls());
expect(spy.calledOnce).toEqual(true);
//expect(spy.calledWith('test')).toEqual(true);
});
});