You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
4.5 KiB
175 lines
4.5 KiB
define([ |
|
'intern!object', |
|
'intern/chai!assert', |
|
'../../../request/util', |
|
'../../../has', |
|
'../../../request/xhr' |
|
], function(registerSuite, assert, util, has){ |
|
registerSuite({ |
|
name: 'dojo/request/util', |
|
|
|
'deepCopy': function(){ |
|
var object1 = { |
|
apple: 0, |
|
banana: { |
|
weight: 52, |
|
price: 100, |
|
code: "B12345", |
|
purchased: new Date(2016, 0, 1) |
|
}, |
|
cherry: 97 |
|
}; |
|
var object2 = { |
|
banana: { |
|
price: 200, |
|
code: "B98765", |
|
purchased: new Date(2017, 0, 1) |
|
}, |
|
durian: 100 |
|
}; |
|
util.deepCopy(object1, object2); |
|
assert.strictEqual(object1.banana.weight, 52); |
|
assert.strictEqual(object1.banana.price, 200); |
|
assert.strictEqual(object1.banana.code, "B98765"); |
|
assert.equal(object1.banana.purchased.getTime(), new Date(2017, 0, 1).getTime()); |
|
}, |
|
|
|
'.deepCopy should ignore the __proto__ property': function() { |
|
var payload = JSON.parse('{ "__proto__": { "protoPollution": true }}'); |
|
util.deepCopy({}, payload); |
|
assert.isUndefined(({}).protoPollution); |
|
}, |
|
|
|
'deepCopy with FormData': function(){ |
|
if (has('native-formdata')) { |
|
var formData = new FormData(); |
|
var object1 = { |
|
apple: 0, |
|
banana: { |
|
weight: 52, |
|
price: 100, |
|
code: "B12345", |
|
purchased: new Date(2016, 0, 1) |
|
}, |
|
cherry: 97 |
|
}; |
|
var object2 = { |
|
banana: { |
|
price: 200, |
|
code: "B98765", |
|
purchased: new Date(2017, 0, 1) |
|
}, |
|
formData: formData, |
|
durian: 100 |
|
}; |
|
util.deepCopy(object1, object2); |
|
assert.strictEqual(object1.banana.weight, 52); |
|
assert.strictEqual(object1.banana.price, 200); |
|
assert.strictEqual(object1.banana.code, "B98765"); |
|
assert.strictEqual(object1.formData, formData); |
|
assert.equal(object1.banana.purchased.getTime(), new Date(2017, 0, 1).getTime()); |
|
} else { |
|
this.skip('Do not run test if FormData not available.'); |
|
} |
|
}, |
|
|
|
'deepCopy with Blob': function(){ |
|
if (has('native-blob')) { |
|
var blob = new Blob([JSON.stringify({test: "data"})], {type: 'application/json'}); |
|
var object1 = { |
|
apple: 0, |
|
banana: { |
|
weight: 52, |
|
price: 100, |
|
code: "B12345", |
|
purchased: new Date(2016, 0, 1) |
|
}, |
|
cherry: 97 |
|
}; |
|
var object2 = { |
|
banana: { |
|
price: 200, |
|
code: "B98765", |
|
purchased: new Date(2017, 0, 1) |
|
}, |
|
blob: blob, |
|
durian: 100 |
|
}; |
|
util.deepCopy(object1, object2); |
|
assert.strictEqual(object1.banana.weight, 52); |
|
assert.strictEqual(object1.banana.price, 200); |
|
assert.strictEqual(object1.banana.code, "B98765"); |
|
assert.strictEqual(object1.blob, blob); |
|
assert.equal(object1.banana.purchased.getTime(), new Date(2017, 0, 1).getTime()); |
|
} else { |
|
this.skip('Do not run test if Blob not available.'); |
|
} |
|
}, |
|
|
|
'deepCopy with Element, given Element is defined': function(){ |
|
if (typeof Element !== 'undefined') { |
|
var element = document.createElement('span'); |
|
var object1 = { |
|
apple: 0, |
|
banana: { |
|
weight: 52, |
|
price: 100, |
|
code: "B12345", |
|
purchased: new Date(2016, 0, 1) |
|
}, |
|
cherry: 97 |
|
}; |
|
var object2 = { |
|
banana: { |
|
price: 200, |
|
code: "B98765", |
|
purchased: new Date(2017, 0, 1) |
|
}, |
|
element: element, |
|
durian: 100 |
|
}; |
|
util.deepCopy(object1, object2); |
|
assert.strictEqual(object1.banana.weight, 52); |
|
assert.strictEqual(object1.banana.price, 200); |
|
assert.strictEqual(object1.banana.code, "B98765"); |
|
assert.strictEqual(object1.element, element); |
|
assert.equal(object1.banana.purchased.getTime(), new Date(2017, 0, 1).getTime()); |
|
} else { |
|
this.skip('Do not run test if Element not available.'); |
|
} |
|
}, |
|
|
|
'deepCopy with Element, given Element is not defined': function(){ |
|
if (typeof Element !== 'undefined') { |
|
this.skip('Do not run test if Element is available.'); |
|
} |
|
|
|
var element = {nodeType: 1, value: 'Orange'}; |
|
var object1 = { |
|
apple: 0, |
|
banana: { |
|
weight: 52, |
|
price: 100, |
|
code: "B12345", |
|
purchased: new Date(2016, 0, 1) |
|
}, |
|
cherry: 97 |
|
}; |
|
var object2 = { |
|
banana: { |
|
price: 200, |
|
code: "B98765", |
|
purchased: new Date(2017, 0, 1) |
|
}, |
|
element: element, |
|
durian: 100 |
|
}; |
|
util.deepCopy(object1, object2); |
|
assert.strictEqual(object1.banana.weight, 52); |
|
assert.strictEqual(object1.banana.price, 200); |
|
assert.strictEqual(object1.banana.code, "B98765"); |
|
assert.strictEqual(object1.element, element); |
|
assert.equal(object1.banana.purchased.getTime(), new Date(2017, 0, 1).getTime()); |
|
} |
|
}); |
|
});
|
|
|