@tdb/util
Version:
Shared helpers and utilities.
200 lines (176 loc) • 7.03 kB
text/typescript
import { expect } from 'chai';
import { value } from '.';
describe('isPlainObject', () => {
it('is a plain object', () => {
expect(value.isPlainObject(Object.create({}))).to.equal(true);
expect(value.isPlainObject(Object.create(Object.prototype))).to.equal(true);
expect(value.isPlainObject({ foo: 123 })).to.equal(true);
expect(value.isPlainObject({})).to.equal(true);
});
it('is not a plain object', () => {
class Foo {}
expect(value.isPlainObject(1)).to.equal(false);
expect(value.isPlainObject(['foo', 'bar'])).to.equal(false);
expect(value.isPlainObject([])).to.equal(false);
expect(value.isPlainObject(new Foo())).to.equal(false);
expect(value.isPlainObject(null)).to.equal(false);
expect(value.isPlainObject(Object.create(null))).to.equal(false);
});
});
describe('value.isBoolString', () => {
it('is a boolean', () => {
expect(value.isBoolString('true')).to.eql(true);
expect(value.isBoolString('false')).to.eql(true);
expect(value.isBoolString('True')).to.eql(true);
expect(value.isBoolString('False')).to.eql(true);
expect(value.isBoolString('TRUE')).to.eql(true);
expect(value.isBoolString('FALSE')).to.eql(true);
});
it('is not a boolean', () => {
expect(value.isBoolString(undefined)).to.eql(false);
expect(value.isBoolString('')).to.eql(false);
expect(value.isBoolString('HELLO')).to.eql(false);
});
});
describe('value.isBlank', () => {
describe('blank', () => {
it('is blank (nothing)', () => {
expect(value.isBlank(undefined)).to.equal(true);
expect(value.isBlank(null)).to.equal(true);
});
it('is blank (string)', () => {
expect(value.isBlank('')).to.equal(true);
expect(value.isBlank(' ')).to.equal(true);
expect(value.isBlank(' ')).to.equal(true);
});
it('is blank (array)', () => {
expect(value.isBlank([])).to.equal(true);
expect(value.isBlank([null])).to.equal(true);
expect(value.isBlank([undefined])).to.equal(true);
expect(value.isBlank([undefined, null])).to.equal(true);
expect(value.isBlank([undefined, null, ''])).to.equal(true);
});
});
describe('NOT blank', () => {
it('is not blank (string)', () => {
expect(value.isBlank('a')).to.equal(false);
expect(value.isBlank(' .')).to.equal(false);
});
it('is not blank (array)', () => {
expect(value.isBlank([1])).to.equal(false);
expect(value.isBlank([null, 'value'])).to.equal(false);
expect(value.isBlank([null, ' '])).to.equal(false);
});
it('is not blank (other values)', () => {
expect(value.isBlank(1)).to.equal(false);
expect(value.isBlank({})).to.equal(false);
expect(value.isBlank(() => 0)).to.equal(false);
});
});
});
describe('value.isNumeric', () => {
it('is numeric (number)', () => {
expect(value.isNumeric(0)).to.equal(true);
expect(value.isNumeric(1)).to.equal(true);
expect(value.isNumeric(-1)).to.equal(true);
expect(value.isNumeric(0.5)).to.equal(true);
expect(value.isNumeric(123456.123456)).to.equal(true);
});
it('is numeric (string)', () => {
expect(value.isNumeric('0')).to.equal(true);
expect(value.isNumeric('1')).to.equal(true);
expect(value.isNumeric('-1')).to.equal(true);
expect(value.isNumeric('0.5')).to.equal(true);
expect(value.isNumeric('123456.123456')).to.equal(true);
});
it('is not numeric', () => {
expect(value.isNumeric(null)).to.equal(false);
expect(value.isNumeric(undefined)).to.equal(false);
expect(value.isNumeric('string')).to.equal(false);
expect(value.isNumeric('123px')).to.equal(false);
expect(value.isNumeric({})).to.equal(false);
expect(value.isNumeric(new Date())).to.equal(false);
});
});
describe('isLetter', () => {
it('is a letter', () => {
expect(value.isLetter('A')).to.eql(true);
expect(value.isLetter('a')).to.eql(true);
expect(value.isLetter('b')).to.eql(true);
expect(value.isLetter('z')).to.eql(true);
expect(value.isLetter('Z')).to.eql(true);
});
it('is not a letter', () => {
expect(value.isLetter(undefined)).to.eql(false);
expect(value.isLetter(null)).to.eql(false);
expect(value.isLetter('')).to.eql(false);
expect(value.isLetter('\n')).to.eql(false);
expect(value.isLetter(' ')).to.eql(false);
expect(value.isLetter('1')).to.eql(false);
expect(value.isLetter('*')).to.eql(false);
expect(value.isLetter('.')).to.eql(false);
expect(value.isLetter(' a')).to.eql(false);
expect(value.isLetter(123)).to.eql(false);
expect(value.isLetter({})).to.eql(false);
expect(value.isLetter(new Date())).to.eql(false);
});
});
describe('isAlpha', () => {
it('is alphabet letters', () => {
expect(value.isAlpha('A')).to.eql(true);
expect(value.isAlpha('a')).to.eql(true);
expect(value.isAlpha('ABC')).to.eql(true);
});
it('is not all letters', () => {
expect(value.isAlpha(undefined)).to.eql(false);
expect(value.isAlpha(null)).to.eql(false);
expect(value.isAlpha('')).to.eql(false);
expect(value.isAlpha('\n')).to.eql(false);
expect(value.isAlpha(' ')).to.eql(false);
expect(value.isAlpha('1')).to.eql(false);
expect(value.isAlpha('*')).to.eql(false);
expect(value.isAlpha('.')).to.eql(false);
expect(value.isAlpha(' a')).to.eql(false);
expect(value.isAlpha(123)).to.eql(false);
expect(value.isAlpha({})).to.eql(false);
expect(value.isAlpha(new Date())).to.eql(false);
expect(value.isAlpha('A:B')).to.eql(false);
expect(value.isAlpha('A-B')).to.eql(false);
expect(value.isAlpha('A B')).to.eql(false);
});
});
describe('hasWhitespace', () => {
it('has whitespace', () => {
expect(value.hasWhitespace(' ')).to.eql(true);
expect(value.hasWhitespace(' ')).to.eql(true);
expect(value.hasWhitespace('one two')).to.eql(true);
expect(value.hasWhitespace(' one two ')).to.eql(true);
});
it('has no whitespace', () => {
expect(value.hasWhitespace('')).to.eql(false);
expect(value.hasWhitespace('hello')).to.eql(false);
expect(value.hasWhitespace('123')).to.eql(false);
});
});
describe('isEmail', () => {
it('is not an email when empty', () => {
expect(value.isEmail('')).to.eql(false);
expect(value.isEmail(' ')).to.eql(false);
expect(value.isEmail()).to.eql(false);
});
it('is not an email address whem not trimmed of whitespace', () => {
expect(value.isEmail(' phil@foo.com')).to.eql(false);
expect(value.isEmail('phil@foo.com ')).to.eql(false);
expect(value.isEmail(' phil@foo.com ')).to.eql(false);
});
it('is not an email address', () => {
expect(value.isEmail('phil@foo.c')).to.eql(false);
expect(value.isEmail('phil@foo.')).to.eql(false);
expect(value.isEmail('@foo.com')).to.eql(false);
expect(value.isEmail('foo.com')).to.eql(false);
});
it('is an email', () => {
expect(value.isEmail('phil@foo.com')).to.eql(true);
expect(value.isEmail('1@1.nz')).to.eql(true);
});
});