You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
2.9 KiB
JavaScript

var expect = require('expect');
var utils = require('../lib/utils');
var assign = utils.assign;
var forEach = utils.forEach;
var isArray = utils.isArray;
var isFunction = utils.isFunction;
var isRegExp = utils.isRegExp;
var isString = utils.isString;
var noop = utils.noop;
function SomeClass (foo) {
this.foo = foo;
}
SomeClass.prototype.bar = 'asdf';
describe('utils', function () {
it('→ exists', function () {
expect(utils).toBeDefined();
});
describe('→ noop', function () {
it('→ is a function', function () {
expect(noop).toBeInstanceOf(Function);
});
});
describe('→ isString', function () {
it('→ true for strings', function () {
expect(isString('is string')).toBe(true);
});
it('→ false for not strings', function () {
expect(isString(/is string/)).toBe(false);
});
});
describe('→ isRegExp', function () {
it('→ true for regex', function () {
expect(isRegExp(/some regex/)).toBe(true);
});
it('→ false for strings', function () {
expect(isRegExp('some string')).toBe(false);
});
});
describe('→ isArray', function () {
it('→ true for array', function () {
expect(isArray([])).toBe(true);
});
it('→ false for regex', function () {
expect(isArray(/some regex/)).toBe(false);
});
it('→ false for strings', function () {
expect(isArray('some string')).toBe(false);
});
});
describe('→ isFunction', function () {
it('→ true for function', function () {
expect(isFunction(function () {})).toBe(true);
});
it('→ false for array', function () {
expect(isFunction([])).toBe(false);
});
it('→ false for regex', function () {
expect(isFunction(/some regex/)).toBe(false);
});
it('→ false for strings', function () {
expect(isFunction('some string')).toBe(false);
});
});
describe('→ forEach', function () {
it('→ does not call properties on prototype', function () {
var count = 0;
forEach(new SomeClass(123), function (key, value) {
count += 1;
expect(key).toBe('foo');
expect(value).toBe(123);
});
expect(count).toEqual(1);
});
});
describe('→ assign', function () {
it('→ adds properties to dest', function () {
var dest = {};
var src = {foo: 123, bar: 'asdf'};
assign(dest, src);
expect(dest).toEqual({foo: 123, bar: 'asdf'});
});
it('→ overrides properties to dest', function () {
var dest = {foo: 456, bar: 'qwerty', blah: /foo/};
var src = {foo: 123, bar: 'asdf'};
assign(dest, src);
expect(dest).toEqual({foo: 123, bar: 'asdf', blah: /foo/});
});
it('→ does not overrides properties on prototype', function () {
var dest = {foo: 456, bar: 'qwerty', blah: /foo/};
assign(dest, new SomeClass(123));
expect(dest).toEqual({foo: 123, bar: 'qwerty', blah: /foo/});
});
});
});