UNPKG

dojo

Version:

Dojo core is a powerful, lightweight library that makes common tasks quicker and easier. Animate elements, manipulate the DOM, and query with easy CSS syntax, all without sacrificing performance.

176 lines (168 loc) 4.61 kB
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()); } }); });