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).not.toBeUndefined() }) 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/}) }) }) })