Choices/src/scripts/constants.test.ts
Josh Johnson 68313da412
Convert to typescript (#795)
* Typescript config setup

* Add type annotations to components

* Further type additions

* And more...

* Add types to actions

* Add types to templates

* Further type checks

* Further type additons

* Install fuse latest

* Housekeeping

* Remove old type definitions

* Fix remaning type issues

* Fix some failing tests

* Remove types workflow

* Fix failing unit tests

* Resolve back space event regression

* Convert cypress files to .ts

* Fix eslint issues

* Remove cachebusting urls

* Resolve delete button bug

* Resolve regression bugs

* Fix lint script

* Fix lint workflow

* Pass args instead of object to keyboard handlers

* Flatten misc reducer

* Resolve keyboad action test failures

* Use Pick instead of Partial

* Use interfaces in action tests

* Update firefox image

* Incorporate #791

* Incorporate #788
2019-12-23 18:22:54 +00:00

161 lines
5.3 KiB
TypeScript

import { expect } from 'chai';
import {
DEFAULT_CLASSNAMES,
DEFAULT_CONFIG,
EVENTS,
ACTION_TYPES,
KEY_CODES,
SCROLLING_SPEED,
} from './constants';
describe('constants', () => {
describe('type checks', () => {
describe('DEFAULT_CLASSNAMES', () => {
it('exports as an object with expected keys', () => {
expect(DEFAULT_CLASSNAMES).to.be.an('object');
expect(Object.keys(DEFAULT_CLASSNAMES)).to.eql([
'containerOuter',
'containerInner',
'input',
'inputCloned',
'list',
'listItems',
'listSingle',
'listDropdown',
'item',
'itemSelectable',
'itemDisabled',
'itemChoice',
'placeholder',
'group',
'groupHeading',
'button',
'activeState',
'focusState',
'openState',
'disabledState',
'highlightedState',
'selectedState',
'flippedState',
'loadingState',
'noResults',
'noChoices',
]);
});
});
describe('DEFAULT_CONFIG', () => {
it('exports as an object', () => {
expect(DEFAULT_CONFIG).to.be.an('object');
});
it('has expected config options', () => {
expect(DEFAULT_CONFIG.items).to.be.an('array');
expect(DEFAULT_CONFIG.choices).to.be.an('array');
expect(DEFAULT_CONFIG.silent).to.be.a('boolean');
expect(DEFAULT_CONFIG.renderChoiceLimit).to.be.a('number');
expect(DEFAULT_CONFIG.maxItemCount).to.be.a('number');
expect(DEFAULT_CONFIG.addItems).to.be.a('boolean');
expect(DEFAULT_CONFIG.addItemFilter).to.equal(null);
expect(DEFAULT_CONFIG.removeItems).to.be.a('boolean');
expect(DEFAULT_CONFIG.removeItemButton).to.be.a('boolean');
expect(DEFAULT_CONFIG.editItems).to.be.a('boolean');
expect(DEFAULT_CONFIG.duplicateItemsAllowed).to.be.a('boolean');
expect(DEFAULT_CONFIG.delimiter).to.be.a('string');
expect(DEFAULT_CONFIG.paste).to.be.a('boolean');
expect(DEFAULT_CONFIG.searchEnabled).to.be.a('boolean');
expect(DEFAULT_CONFIG.searchChoices).to.be.a('boolean');
expect(DEFAULT_CONFIG.searchFloor).to.be.a('number');
expect(DEFAULT_CONFIG.searchResultLimit).to.be.a('number');
expect(DEFAULT_CONFIG.searchFields).to.be.an('array');
expect(DEFAULT_CONFIG.position).to.be.a('string');
expect(DEFAULT_CONFIG.shouldSort).to.be.a('boolean');
expect(DEFAULT_CONFIG.shouldSortItems).to.be.a('boolean');
expect(DEFAULT_CONFIG.placeholder).to.be.a('boolean');
expect(DEFAULT_CONFIG.placeholderValue).to.equal(null);
expect(DEFAULT_CONFIG.searchPlaceholderValue).to.equal(null);
expect(DEFAULT_CONFIG.prependValue).to.equal(null);
expect(DEFAULT_CONFIG.appendValue).to.equal(null);
expect(DEFAULT_CONFIG.renderSelectedChoices).to.be.a('string');
expect(DEFAULT_CONFIG.loadingText).to.be.a('string');
expect(DEFAULT_CONFIG.noResultsText).to.be.a('string');
expect(DEFAULT_CONFIG.noChoicesText).to.be.a('string');
expect(DEFAULT_CONFIG.itemSelectText).to.be.a('string');
expect(DEFAULT_CONFIG.uniqueItemText).to.be.a('string');
expect(DEFAULT_CONFIG.customAddItemText).to.be.a('string');
expect(DEFAULT_CONFIG.addItemText).to.be.a('function');
expect(DEFAULT_CONFIG.maxItemText).to.be.a('function');
expect(DEFAULT_CONFIG.fuseOptions).to.be.an('object');
expect(DEFAULT_CONFIG.callbackOnInit).to.equal(null);
expect(DEFAULT_CONFIG.callbackOnCreateTemplates).to.equal(null);
});
});
describe('EVENTS', () => {
it('exports as an object with expected keys', () => {
expect(EVENTS).to.be.an('object');
expect(Object.keys(EVENTS)).to.eql([
'showDropdown',
'hideDropdown',
'change',
'choice',
'search',
'addItem',
'removeItem',
'highlightItem',
'highlightChoice',
'unhighlightItem',
]);
});
});
describe('ACTION_TYPES', () => {
it('exports as an object with expected keys', () => {
expect(ACTION_TYPES).to.be.an('object');
expect(Object.keys(ACTION_TYPES)).to.eql([
'ADD_CHOICE',
'FILTER_CHOICES',
'ACTIVATE_CHOICES',
'CLEAR_CHOICES',
'ADD_GROUP',
'ADD_ITEM',
'REMOVE_ITEM',
'HIGHLIGHT_ITEM',
'CLEAR_ALL',
'RESET_TO',
'SET_IS_LOADING',
]);
});
});
describe('KEY_CODES', () => {
it('exports as an object with expected keys', () => {
expect(KEY_CODES).to.be.an('object');
expect(Object.keys(KEY_CODES)).to.eql([
'BACK_KEY',
'DELETE_KEY',
'ENTER_KEY',
'A_KEY',
'ESC_KEY',
'UP_KEY',
'DOWN_KEY',
'PAGE_UP_KEY',
'PAGE_DOWN_KEY',
]);
});
it('exports each value as a number', () => {
Object.keys(KEY_CODES).forEach(key => {
expect(KEY_CODES[key]).to.be.a('number');
});
});
});
describe('SCROLLING_SPEED', () => {
it('exports as an number', () => {
expect(SCROLLING_SPEED).to.be.a('number');
});
});
});
});