require("../common"); var target = function() {}; process.mixin(target, { foo: 'bar' }); assert.equal('bar', target.foo); // This test verifies there are no DOM-related aspects to process.mixin which // originally had been in there due to its jQuery origin. var fakeDomElement = {deep: {nodeType: 4}}; target = {}; process.mixin(true, target, fakeDomElement); assert.deepEqual(target.deep, fakeDomElement.deep); var objectWithUndefinedValue = {foo: undefined}; target = {}; process.mixin(target, objectWithUndefinedValue); assert.ok(target.hasOwnProperty('foo')); // This test verifies getters and setters being copied correctly var source = { _foo:'a', get foo(){ return this._foo; }, set foo(value){ this._foo = "did set to "+value; } }; target = {}; process.mixin(target, source); target._foo = 'b'; assert.equal(source.foo, 'a'); assert.equal('b', target.foo, 'target.foo != "b" -- value/result was copied instead of getter function'); source.foo = 'c'; assert.equal('did set to c', source.foo, 'source.foo != "c" -- value was set instead of calling setter function'); // Test that nested arrays are handled properly target = {}; process.mixin(true, target, { foo: ['bar'], }); assert.notStrictEqual(['bar'], target.foo); assert.deepEqual(['bar'], target.foo);