metadata-based-explorer1
Version:
Box UI Elements
78 lines (62 loc) • 2.73 kB
JavaScript
import React from 'react';
import sinon from 'sinon';
import DatalistItem from '..';
const sandbox = sinon.sandbox.create();
describe('components/datalist-item/DatalistItem', () => {
afterEach(() => {
sandbox.verifyAndRestore();
});
describe('render()', () => {
test('should render default component', () => {
const child = 'Test';
const wrapper = shallow(<DatalistItem>{child}</DatalistItem>);
expect(wrapper.is('li')).toBe(true);
expect(wrapper.hasClass('datalist-item')).toBe(true);
expect(wrapper.prop('id')).toBeTruthy();
expect(wrapper.text()).toEqual(child);
});
test('should render the correct classes when className and isActive are specified', () => {
const className = 'test';
const wrapper = shallow(
<DatalistItem className={className} isActive>
Test
</DatalistItem>,
);
expect(wrapper.hasClass('datalist-item')).toBe(true);
expect(wrapper.hasClass('is-active')).toBe(true);
expect(wrapper.hasClass(className)).toBe(true);
});
test('should render custom attributes when specified', () => {
const wrapper = shallow(<DatalistItem data-resin-target="test">Test</DatalistItem>);
expect(wrapper.prop('data-resin-target')).toEqual('test');
});
test('should not override id or role on li when props are specified', () => {
const id = 'test';
const role = 'listitem';
const wrapper = shallow(
<DatalistItem id={id} role={role}>
Test
</DatalistItem>,
);
expect(wrapper.prop('id')).not.toEqual(id);
expect(wrapper.prop('role')).toEqual('option');
});
});
describe('setActiveItemID()', () => {
test('should call setActiveItemID() in componentWillMount() when isActive is true', () => {
const setActiveItemIDSpy = sandbox.spy();
shallow(
<DatalistItem isActive setActiveItemID={setActiveItemIDSpy}>
Test
</DatalistItem>,
);
expect(setActiveItemIDSpy.calledOnce).toBe(true);
});
test('should call setActiveItemID() when prop isActive becomes true', () => {
const setActiveItemIDSpy = sandbox.spy();
const wrapper = shallow(<DatalistItem setActiveItemID={setActiveItemIDSpy}>Test</DatalistItem>);
wrapper.setProps({ isActive: true });
expect(setActiveItemIDSpy.calledOnce).toBe(true);
});
});
});