wix-style-react
Version:
wix-style-react
94 lines (80 loc) • 4.01 kB
JavaScript
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();
});
});
});