summaryrefslogtreecommitdiff
path: root/test/simple/test-process-mixin.js
blob: ca7bf9545bd9d84bfcfbaf5757a96ca5c6854003 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
process.mixin(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);