UNPKG

search-suggestion

Version:

Simple, lightweight, flexible search suggestion, autocomplete component

161 lines (124 loc) 5.32 kB
'use strict'; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _enzyme = require('enzyme'); var _enzyme2 = _interopRequireDefault(_enzyme); var _sinon = require('sinon'); var _enzymeAdapterReact = require('enzyme-adapter-react-15'); var _enzymeAdapterReact2 = _interopRequireDefault(_enzymeAdapterReact); var _setup5 = require('../fixtures/setup'); var _setup6 = _interopRequireDefault(_setup5); var _data = require('../fixtures/data'); var _data2 = _interopRequireDefault(_data); var _ = require('../'); var _2 = _interopRequireDefault(_); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // https://github.com/airbnb/enzyme#upgrading-from-enzyme-2x-or-react--16 var _global = global, describe = _global.describe, it = _global.it; _enzyme2.default.configure({ adapter: new _enzymeAdapterReact2.default() }); describe('<Suggestion />', function () { it('calls componentDidMount() lifecycle method', function () { var _setup = (0, _setup6.default)(), BasicAutoComplete = _setup.BasicAutoComplete; var componentDidMountSpy = (0, _sinon.spy)(_2.default.prototype, 'componentDidMount'); var wrapper = (0, _enzyme.mount)(_react2.default.createElement(BasicAutoComplete, { initInputValue: 'hello world', getDisplayName: function getDisplayName(item) { return item.name; } })); expect(_2.default.prototype.componentDidMount.calledOnce).toBe(true); componentDidMountSpy.restore(); }); it('calls componentWillReceiveProps() lifecycle method', function () { var _setup2 = (0, _setup6.default)(), BasicAutoComplete = _setup2.BasicAutoComplete; var componentWillReceivePropsSpy = (0, _sinon.spy)(_2.default.prototype, 'componentWillReceiveProps'); var wrapper = (0, _enzyme.mount)(_react2.default.createElement(BasicAutoComplete, { initInputValue: 'hello world', getDisplayName: function getDisplayName(item) { return item.name; } })); expect(_2.default.prototype.componentWillReceiveProps.calledOnce).toBe(false); wrapper.setProps({ initInputValue: null }); expect(_2.default.prototype.componentWillReceiveProps.calledOnce).toBe(true); componentWillReceivePropsSpy.restore(); }); it('passs onSelectedItem prop into <AutoComplete /> component', function () { var handleSelectedItemSpy = (0, _sinon.spy)(); var _setup3 = (0, _setup6.default)(), BasicAutoComplete = _setup3.BasicAutoComplete, Children = _setup3.Children; var div = global.document.createElement('div'); global.document.body.appendChild(div); var wrapper = (0, _enzyme.mount)(_react2.default.createElement(BasicAutoComplete, { onSelectedItem: handleSelectedItemSpy, getDisplayName: function getDisplayName(item) { return item.name; } }), { attachTo: div }); var input = wrapper.find('#__inputItemProps'); var filterData = (0, _setup5.createData)('pa', _data2.default); wrapper.setProps({ items: filterData }); expect(filterData.length).toBe(6); input.simulate('change', { target: { value: 'pa' } }); expect(Children).toHaveBeenLastCalledWith(expect.objectContaining({ isOpen: true, inputValue: 'pa', items: filterData })); var selectedItem = filterData[1]; // ⬇️ input.simulate('keydown', { keyCode: _setup5.KEYS_EVENT.DOWN }); expect(Children).toHaveBeenLastCalledWith(expect.objectContaining({ isOpen: true, highlightedIndex: 1 })); input.simulate('keydown', { keyCode: _setup5.KEYS_EVENT.ENTER }); expect(handleSelectedItemSpy.calledOnce).toBe(true); expect(Children).toHaveBeenLastCalledWith(expect.objectContaining({ isOpen: false, selectedItem: selectedItem, highlightedIndex: 1, inputValue: selectedItem.name })); }); it('clear all data after click clear button', function () { var handleSelectedItemSpy = (0, _sinon.spy)(); var _setup4 = (0, _setup6.default)(), BasicAutoComplete = _setup4.BasicAutoComplete, Children = _setup4.Children; var div = global.document.createElement('div'); global.document.body.appendChild(div); var wrapper = (0, _enzyme.mount)(_react2.default.createElement(BasicAutoComplete, { onSelectedItem: handleSelectedItemSpy, getDisplayName: function getDisplayName(item) { return item.name; } }), { attachTo: div }); var input = wrapper.find('#__inputItemProps'); var filterData = (0, _setup5.createData)('pa', _data2.default); wrapper.setProps({ items: filterData }); expect(filterData.length).toBe(6); input.simulate('change', { target: { value: 'pa' } }); expect(Children).toHaveBeenLastCalledWith(expect.objectContaining({ isOpen: true, inputValue: 'pa', items: filterData })); var btnClear = wrapper.find('#btnClear'); var selectedItem = filterData[1]; // ⬇️ btnClear.simulate('click', { keyCode: _setup5.KEYS_EVENT.DOWN }); expect(Children).toHaveBeenLastCalledWith(expect.objectContaining({ inputValue: '' })); var btnClearAfterClear = wrapper.find('#btnClear'); expect(btnClearAfterClear.length).toBe(0); }); });