blob: ae5b212fee8c852af8286139f534eae51439f388 [file] [log] [blame]
'use strict';
require('chai').should();
var PouchDB = require('../../packages/node_modules/pouchdb-for-coverage');
var extend = PouchDB.utils.jsExtend;
describe('test.jsExtend.js', function () {
it('Test one level merging', function () {
var obj1 = { name: 'Jonny' }
, obj2 = { lastName: 'Quest' };
extend(obj1, obj2);
obj1.name.should.equal('Jonny');
obj1.lastName.should.equal('Quest');
});
it('Test two levels merging', function () {
var obj1 = { sub: { firstValue: 1 } }
, obj2 = { sub: { secondValue: 2 } };
extend(obj1, obj2);
obj1.sub.firstValue.should.equal(1);
obj1.sub.secondValue.should.be.equal(2);
});
it('Test multilevel merging', function () {
var obj1 = {
name: 'Jonny',
sub: {
firstValue: 1
}
}
, obj2 = {
lastName: 'Quest',
sub: {
secondValue: 2
},
sub2: {
thirdSub: {
thirdValue: 3
}
}
};
extend(obj1, obj2);
obj1.name.should.equal('Jonny');
obj1.lastName.should.equal('Quest');
obj1.sub.firstValue.should.equal(1);
obj1.sub.secondValue.should.equal(2);
obj1.sub2.thirdSub.thirdValue.should.equal(3);
});
it('Test passing multiple ojects as arguments', function () {
var obj1 = { name: 'Jonny' }
, obj2 = { lastName: 'Quest' }
, obj3 = { father: 'Benton' };
extend(obj1, obj2, obj3);
obj1.name.should.equal('Jonny');
obj1.lastName.should.equal('Quest');
obj1.father.should.equal('Benton');
});
it('Test if non object argument raises exception', function () {
(function () {
extend('string', {});
}).should.throw('string is not an object');
});
});