Choices/src/scripts/components/wrapped-input.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

67 lines
1.7 KiB
TypeScript

import { expect } from 'chai';
import { stub } from 'sinon';
import WrappedElement from './wrapped-element';
import WrappedInput from './wrapped-input';
import { DEFAULT_CLASSNAMES } from '../constants';
describe('components/wrappedInput', () => {
let instance;
let element;
const delimiter = '-';
beforeEach(() => {
element = document.createElement('input');
instance = new WrappedInput({
element,
classNames: DEFAULT_CLASSNAMES,
delimiter,
});
});
afterEach(() => {
document.body.innerHTML = '';
instance = null;
});
describe('constructor', () => {
it('assigns choices element to class', () => {
expect(instance.element).to.eql(element);
});
it('assigns classnames to class', () => {
expect(instance.classNames).to.eql(DEFAULT_CLASSNAMES);
});
});
describe('inherited methods', () => {
const methods: string[] = ['conceal', 'reveal', 'enable', 'disable'];
methods.forEach(method => {
describe(method, () => {
beforeEach(() => {
stub(WrappedElement.prototype, method as keyof WrappedElement);
});
afterEach(() => {
WrappedElement.prototype[method].restore();
});
it(`calls super.${method}`, () => {
expect(WrappedElement.prototype[method].called).to.equal(false);
instance[method]();
expect(WrappedElement.prototype[method].called).to.equal(true);
});
});
});
});
describe('value setter', () => {
it('sets the value of the input to the given value', () => {
const newValue = 'Value 1, Value 2, Value 3';
expect(instance.element.value).to.equal('');
instance.value = newValue;
expect(instance.value).to.equal(newValue);
});
});
});