68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { expect } from 'chai';
|
|
|
|
import { defaultTo, defaultUntil, compareItems } from '../src/utils';
|
|
|
|
const TEST_TRUE = 'foo';
|
|
const TEST_FALSE = 'bar';
|
|
|
|
describe('utils', () => {
|
|
describe('default to value helper', () => {
|
|
it('should return the first defined value', () => {
|
|
/* eslint-disable-next-line no-null/no-null */
|
|
expect(defaultTo(null, TEST_TRUE)).to.equal(TEST_TRUE);
|
|
expect(defaultTo(undefined, TEST_TRUE)).to.equal(TEST_TRUE);
|
|
expect(defaultTo(TEST_TRUE, TEST_FALSE)).to.equal(TEST_TRUE);
|
|
});
|
|
});
|
|
|
|
describe('default until value helper', () => {
|
|
it('should return the first defined value', () => {
|
|
/* eslint-disable-next-line no-null/no-null */
|
|
expect(defaultUntil(null, null, TEST_TRUE)).to.equal(TEST_TRUE);
|
|
/* eslint-disable-next-line no-null/no-null */
|
|
expect(defaultUntil(null, undefined, TEST_TRUE)).to.equal(TEST_TRUE);
|
|
expect(defaultUntil(undefined, TEST_TRUE, undefined, undefined, TEST_FALSE)).to.equal(TEST_TRUE);
|
|
expect(defaultUntil(undefined, undefined, TEST_TRUE, undefined)).to.equal(TEST_TRUE);
|
|
});
|
|
});
|
|
|
|
describe('compare items helper', () => {
|
|
/* eslint-disable no-magic-numbers */
|
|
it('should compare items by reference', () => {
|
|
const dat = {};
|
|
expect(compareItems([
|
|
1, dat, 3,
|
|
], [
|
|
1, dat, 3,
|
|
])).to.equal(true);
|
|
|
|
expect(compareItems([
|
|
1, dat, 3,
|
|
], [
|
|
1, {}, 3,
|
|
])).to.equal(false);
|
|
|
|
expect(compareItems([
|
|
1, 2, 3,
|
|
], [
|
|
1, 2, 4,
|
|
])).to.equal(false);
|
|
});
|
|
|
|
it('should sort arrays before comparison', () => {
|
|
expect(compareItems([
|
|
1, 2, 3,
|
|
], [
|
|
3, 2, 1,
|
|
])).to.equal(true);
|
|
});
|
|
|
|
it('should always reject arrays of different lengths', () => {
|
|
expect(compareItems(
|
|
new Array(5).fill(1),
|
|
new Array(3).fill(1)
|
|
)).to.equal(false);
|
|
});
|
|
});
|
|
});
|