mirror of
https://github.com/Choices-js/Choices.git
synced 2024-05-02 14:02:46 +02:00
68313da412
* 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
97 lines
2.7 KiB
TypeScript
97 lines
2.7 KiB
TypeScript
import { expect } from 'chai';
|
|
import List from './list';
|
|
|
|
describe('components/list', () => {
|
|
let instance;
|
|
let choicesElement;
|
|
|
|
beforeEach(() => {
|
|
choicesElement = document.createElement('div');
|
|
instance = new List({
|
|
element: choicesElement,
|
|
});
|
|
});
|
|
|
|
afterEach(() => {
|
|
document.body.innerHTML = '';
|
|
instance = null;
|
|
});
|
|
|
|
describe('constructor', () => {
|
|
it('assigns choices element to class', () => {
|
|
expect(instance.element).to.eql(choicesElement);
|
|
});
|
|
|
|
it('sets the height of the element', () => {
|
|
expect(instance.height).to.eql(choicesElement.scrollTop);
|
|
});
|
|
});
|
|
|
|
describe('clear', () => {
|
|
it("clears element's inner HTML", () => {
|
|
const innerHTML = 'test';
|
|
instance.element.innerHTML = innerHTML;
|
|
expect(instance.element.innerHTML).to.equal(innerHTML);
|
|
instance.clear();
|
|
expect(instance.element.innerHTML).to.equal('');
|
|
});
|
|
});
|
|
|
|
describe('append', () => {
|
|
it('appends passed node to element', () => {
|
|
const elementToAppend = document.createElement('span');
|
|
const childClass = 'test-element';
|
|
elementToAppend.classList.add(childClass);
|
|
expect(instance.element.querySelector(`.${childClass}`)).to.equal(null);
|
|
instance.append(elementToAppend);
|
|
expect(instance.element.querySelector(`.${childClass}`)).to.equal(
|
|
elementToAppend,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('getChild', () => {
|
|
let childElement;
|
|
const childClass = 'test-element';
|
|
|
|
beforeEach(() => {
|
|
childElement = document.createElement('span');
|
|
childElement.classList.add(childClass);
|
|
instance.element.appendChild(childElement);
|
|
});
|
|
|
|
it('returns child element', () => {
|
|
const expectedResponse = childElement;
|
|
const actualResponse = instance.getChild(`.${childClass}`);
|
|
expect(expectedResponse).to.eql(actualResponse);
|
|
});
|
|
});
|
|
|
|
describe('hasChildren', () => {
|
|
describe('when list has children', () => {
|
|
it('returns true', () => {
|
|
const childElement = document.createElement('span');
|
|
instance.element.appendChild(childElement);
|
|
const response = instance.hasChildren();
|
|
expect(response).to.equal(true);
|
|
});
|
|
});
|
|
|
|
describe('when list does not have children', () => {
|
|
it('returns false', () => {
|
|
instance.element.innerHTML = '';
|
|
const response = instance.hasChildren();
|
|
expect(response).to.equal(false);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('scrollToTop', () => {
|
|
it("sets the position's scroll position to 0", () => {
|
|
instance.element.scrollTop = 10;
|
|
instance.scrollToTop();
|
|
expect(instance.element.scrollTop).to.equal(0);
|
|
});
|
|
});
|
|
});
|