UNPKG

wix-style-react

Version:
94 lines (80 loc) 4.01 kB
import React from 'react'; import ReactTestUtils from 'react-dom/test-utils'; import autoCompleteDriverFactory from './AutoComplete.driver'; import AutoComplete from './AutoComplete'; import { createDriverFactory } from 'wix-ui-test-utils/driver-factory'; import { autoCompleteTestkitFactory } from '../../testkit'; import { autoCompleteTestkitFactory as enzymeAutoCompleteTestkitFactory } from '../../testkit/enzyme'; import { mount } from 'enzyme'; var asciiA = '97'; describe('Autocomplete', function () { var createDriver = createDriverFactory(autoCompleteDriverFactory); var options = [{ id: 0, value: 'aaa' }, { id: 1, value: 'abb' }, { id: 2, value: 'bbb', disabled: true }, { id: 3, value: 'bcc' }, { id: 'divider1', value: '-' }, { id: 'element1', value: React.createElement( 'span', { style: { color: 'brown' } }, 'ccc' ) }]; var predicate = function predicate(option) { return option.value.toString().toLowerCase().indexOf('a') !== -1; }; it('should not filter anything without predicate function', function () { var _createDriver = createDriver(React.createElement(AutoComplete, { options: options })), dropdownLayoutDriver = _createDriver.dropdownLayoutDriver; expect(dropdownLayoutDriver.optionsLength()).toBe(options.length); }); ['ArrowUp', 'ArrowDown'].forEach(function (key) { it('should not filter items according to predicate function when pressing ' + key, function () { var _createDriver2 = createDriver(React.createElement(AutoComplete, { options: options, predicate: predicate })), inputDriver = _createDriver2.inputDriver, dropdownLayoutDriver = _createDriver2.dropdownLayoutDriver; inputDriver.trigger('keyDown', { key: key }); expect(dropdownLayoutDriver.optionsLength()).toBe(options.length); }); }); it('should filter items according to predicate function when typing characters', function () { var _createDriver3 = createDriver(React.createElement(AutoComplete, { options: options, predicate: predicate })), inputDriver = _createDriver3.inputDriver, dropdownLayoutDriver = _createDriver3.dropdownLayoutDriver; inputDriver.trigger('keyDown', { key: asciiA }); expect(dropdownLayoutDriver.optionsLength()).toBe(2); }); it('should show all items when focusing even if some text exist', function () { var _createDriver4 = createDriver(React.createElement(AutoComplete, { options: options, predicate: predicate })), dropdownLayoutDriver = _createDriver4.dropdownLayoutDriver, inputDriver = _createDriver4.inputDriver; inputDriver.enterText('aaa'); inputDriver.focus(); expect(dropdownLayoutDriver.optionsLength()).toBe(options.length); }); describe('testkit', function () { it('should exist', function () { var div = document.createElement('div'); var dataHook = 'myDataHook'; var wrapper = div.appendChild(ReactTestUtils.renderIntoDocument(React.createElement( 'div', null, React.createElement(AutoComplete, { dataHook: dataHook }) ))); var autoCompleteTestkit = autoCompleteTestkitFactory({ wrapper: wrapper, dataHook: dataHook }); expect(autoCompleteTestkit.driver.exists()).toBeTruthy(); expect(autoCompleteTestkit.inputDriver.exists()).toBeTruthy(); expect(autoCompleteTestkit.dropdownLayoutDriver.exists()).toBeTruthy(); }); }); describe('enzyme testkit', function () { it('should exist', function () { var dataHook = 'myDataHook'; var wrapper = mount(React.createElement(AutoComplete, { dataHook: dataHook })); var autoCompleteTestkit = enzymeAutoCompleteTestkitFactory({ wrapper: wrapper, dataHook: dataHook }); expect(autoCompleteTestkit.driver.exists()).toBeTruthy(); expect(autoCompleteTestkit.inputDriver.exists()).toBeTruthy(); expect(autoCompleteTestkit.dropdownLayoutDriver.exists()).toBeTruthy(); }); }); });