import React from 'react'; import _ from 'lodash'; import { shallow } from 'enzyme'; import { common, controls } from '../../util/generic-tests'; import Tag from './Tag'; const defaultProps = Tag.defaultProps; describe('Tag', () => { common(Tag); controls(Tag, { callbackName: 'onRemove', controlSelector: '.lucid-Tag-remove-button', eventType: 'click', additionalProps: { isRemovable: true, children: 'foo' }, }); describe('props', () => { it('passes through some props to the root element', () => { const wrapper = shallow( ); const rootProps = _.keys(wrapper.first().props()); // It should pass 'className' and 'children' // and `foo`, `bar`, `baz`, `qux`, and `quux` // to the root element. _.forEach( ['className', 'children', 'foo', 'bar', 'baz', 'qux', 'quux'], (prop) => { expect(_.includes(rootProps, prop)).toBe(true); } ); }); it('filters out the nonPassThroughs from the component wrapper', () => { const nonPassThroughs = { ...defaultProps, callbackId: 0, initialState: {}, }; const wrapper = shallow(); const rootProps = _.keys(wrapper.first().props()); // It should not pass 'callbackId' or 'initialState' // to the root element. _.forEach(['callbackId', 'initialState'], (prop) => { expect(rootProps).not.toContain(prop); }); }); }); });