UNPKG

@snipsonian/core

Version:

Core/base reusable javascript code snippets

227 lines (182 loc) 8.07 kB
import is from './index'; describe('is:', () => { // tslint:disable-next-line:prefer-const let varWithoutValue: string; describe('is.undefined()', () => { it('returns true if input undefined', () => { expect(is.undefined(undefined)).toEqual(true); expect(is.undefined(varWithoutValue)).toEqual(true); }); it('returns false if input defined', () => { expect(is.undefined('')).toEqual(false); expect(is.undefined(0)).toEqual(false); expect(is.undefined([])).toEqual(false); expect(is.undefined({})).toEqual(false); expect(is.undefined(null)).toEqual(false); expect(is.undefined(() => {})).toEqual(false); }); }); describe('is.null()', () => { it('returns true if input null', () => { expect(is.null(null)).toEqual(true); const nullVar: string = null; expect(is.null(nullVar)).toEqual(true); }); it('returns false if input not null', () => { expect(is.null('')).toEqual(false); expect(is.null(0)).toEqual(false); expect(is.null([])).toEqual(false); expect(is.null({})).toEqual(false); expect(is.null(varWithoutValue)).toEqual(false); expect(is.null(undefined)).toEqual(false); }); }); describe('is.set()', () => { it('returns true if input defined and not null', () => { expect(is.set('')).toEqual(true); expect(is.set(0)).toEqual(true); expect(is.set([])).toEqual(true); expect(is.set({})).toEqual(true); const obj = { dummyVar: 'dummyVal', }; expect(is.set(obj.dummyVar)).toEqual(true); }); it('returns false if input undefined or null', () => { expect(is.set(undefined)).toEqual(false); expect(is.set(null)).toEqual(false); const obj = {}; expect(is.set(obj['dummyVar'])).toEqual(false); // eslint-disable-line @typescript-eslint/dot-notation }); }); describe('is.function()', () => { it('returns only true if input is a function', () => { expect(is.function(() => {})).toEqual(true); expect(is.function(sum)).toEqual(true); expect(is.function('')).toEqual(false); expect(is.function(0)).toEqual(false); expect(is.function([])).toEqual(false); expect(is.function({})).toEqual(false); }); function sum(a: number, b: number): number { return a + b; } }); describe('is.boolean()', () => { it('returns only true if input is a boolean', () => { const dummyBool = false; expect(is.boolean(true)).toEqual(true); expect(is.boolean(false)).toEqual(true); expect(is.boolean(dummyBool)).toEqual(true); expect(is.boolean('')).toEqual(false); expect(is.boolean(0)).toEqual(false); expect(is.boolean([])).toEqual(false); expect(is.boolean({})).toEqual(false); expect(is.boolean(() => {})).toEqual(false); }); }); describe('is.number()', () => { it('returns only true if input is a number', () => { const dummyNumb = 123; expect(is.number(0)).toEqual(true); expect(is.number(-1)).toEqual(true); expect(is.number(450.06)).toEqual(true); expect(is.number(dummyNumb)).toEqual(true); expect(is.number('')).toEqual(false); expect(is.number([])).toEqual(false); expect(is.number({})).toEqual(false); expect(is.number(() => {})).toEqual(false); expect(is.number(Number('123'))).toEqual(true); expect(is.number(Number('abc'))).toEqual(false); }); }); describe('is.string()', () => { it('returns only true if input is a string', () => { const dummyStr = 'abc'; expect(is.string('')).toEqual(true); expect(is.string(dummyStr)).toEqual(true); expect(is.string(`${dummyStr}_xyz`)).toEqual(true); expect(is.string(0)).toEqual(false); expect(is.string([])).toEqual(false); expect(is.string({})).toEqual(false); expect(is.string(() => {})).toEqual(false); }); }); describe('is.array()', () => { it('returns only true if input is an array', () => { const dummyArr = [7, 'b', {}]; expect(is.array([])).toEqual(true); expect(is.array(dummyArr)).toEqual(true); expect(is.array('')).toEqual(false); expect(is.array(0)).toEqual(false); expect(is.array({})).toEqual(false); expect(is.array(() => {})).toEqual(false); }); }); describe('is.object()', () => { it('returns only true if input is an object', () => { const dummyObj = { someVar: 'some value' }; expect(is.object(dummyObj)).toEqual(true); expect(is.object({})).toEqual(true); expect(is.object([])).toEqual(true); // an array is also an object expect(is.object(null)).toEqual(true); // null is also an object for JS expect(is.object('')).toEqual(false); expect(is.object(0)).toEqual(false); expect(is.object(() => {})).toEqual(false); }); }); describe('is.objectPure()', () => { it('returns only true if input is an object but not an array', () => { const dummyObj = { someVar: 'some value' }; expect(is.objectPure(dummyObj)).toEqual(true); expect(is.objectPure({})).toEqual(true); expect(is.objectPure([])).toEqual(false); // !!! expect(is.objectPure(null)).toEqual(false); // !!! expect(is.objectPure('')).toEqual(false); expect(is.objectPure(0)).toEqual(false); expect(is.objectPure(() => {})).toEqual(false); }); }); describe('is.date()', () => { it('returns only true if input is of type Date', () => { expect(is.date(new Date())).toEqual(true); expect(is.date(null)).toEqual(false); expect(is.date(undefined)).toEqual(false); expect(is.date({})).toEqual(false); expect(is.date('2021-03-29')).toEqual(false); }); }); describe('is.promise()', () => { it('returns only true if input is a promise', () => { expect(is.promise(Promise.resolve('success'))).toEqual(true); const rejectedPromise = Promise .reject(new Error('fail!')) .catch(() => {}); expect(is.promise(rejectedPromise)).toEqual(true); expect(is.promise(null)).toEqual(false); expect(is.promise(undefined)).toEqual(false); expect(is.promise({ then: 'is not a function' })).toEqual(false); }); }); describe('is.builder()', () => { it('returns only true if input is a builder (has a build method)', () => { const dummyBuilderObj = { build: () => {}, }; expect(is.builder(dummyBuilderObj)).toEqual(true); class DummyBuilderClass { // eslint-disable-next-line @typescript-eslint/no-explicit-any public build(): any { return this['prop']; // eslint-disable-line @typescript-eslint/dot-notation } } expect(is.builder(DummyBuilderClass)).toEqual(false); expect(is.builder(new DummyBuilderClass())).toEqual(true); expect(is.builder('')).toEqual(false); expect(is.builder(0)).toEqual(false); expect(is.builder([])).toEqual(false); expect(is.builder({})).toEqual(false); expect(is.builder(() => {})).toEqual(false); }); }); });