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.

187 lines (154 loc) 6.34 kB
define([ 'intern!object', 'intern/chai!assert', 'sinon', '../../../_base/window', '../../../_base/kernel', '../../../_base/lang', '../../../_base/sniff' ], function (registerSuite, assert, sinon, window, kernel, lang, sniff) { registerSuite({ name: 'dojo/_base/window', "direct delegation": function () { assert.equal(kernel.global, window.global); assert.equal(kernel.global["document"], window.doc); }, "body()": { "undefined": function () { //arrange //act var result = window.body(); //assert assert.equal(result, kernel.doc.body); }, "document": function () { //arrange var iframe = document.createElement("iframe"); document.body.appendChild(iframe); //act var result = window.body(iframe.contentDocument); //assert assert.equal(result, iframe.contentDocument.body); document.body.removeChild(iframe); } }, "setContext()": { "object + document": function () { //arrange var object = { foo: "bar" }, iframe = document.createElement("iframe"), origGlobal = kernel.global, origDoc = kernel.doc; document.body.appendChild(iframe); var doc = iframe.contentDocument; //act window.setContext(object, doc); //assert assert.equal(doc, kernel.doc); assert.equal(doc, window.doc); assert.equal(object, kernel.global); assert.equal(object, window.global); kernel.global = window.global = origGlobal; kernel.doc = window.doc = origDoc; } }, "withGlobal()": { "object + function + object + array": function () { //arrange var globalObject = { document: { foo: "bar" } }, callback = function () { }, thisObject = { baz: "buz" }, cbArguments = [42, 27], mock = sinon.spy(window, "withDoc"), oldGlobal = kernel.global; //act window.withGlobal(globalObject, callback, thisObject, cbArguments); //assert assert.isTrue(mock.calledWith(globalObject.document, callback, thisObject, cbArguments)); assert.equal(kernel.global, oldGlobal); mock.restore(); } }, "withDoc()": { "document + function + object + array": function () { //arrange var iframe = document.createElement("iframe"), caughtArgs, caughtThis, expectedReturn = "expected return", callback = function () { caughtThis = this; caughtArgs = arguments; return expectedReturn; }, thisObject = { baz: "buz" }, cbArguments = [42, 27], oldGlobal = kernel.global; document.body.appendChild(iframe); var doc = iframe.contentDocument; //act var result = window.withDoc(doc, callback, thisObject, cbArguments); //assert assert.equal(result, expectedReturn); for (var i in cbArguments) { assert.equal(caughtArgs[i], cbArguments[i]); } assert.equal(caughtThis, thisObject); }, "document + string + object + array": function () { //arrange var iframe = document.createElement("iframe"), caughtArgs, caughtThis, expectedReturn = "expected return", callback = function () { caughtThis = this; caughtArgs = arguments; return expectedReturn; }, functionName = "theFunction", thisObject = { baz: "buz" }, cbArguments = [42, 27], oldDoc = kernel.doc; thisObject[functionName] = callback; document.body.appendChild(iframe); var doc = iframe.contentDocument; //act var result = window.withDoc(doc, functionName, thisObject, cbArguments); //assert assert.equal(result, expectedReturn); for (var i in cbArguments) { assert.equal(caughtArgs[i], cbArguments[i]); } assert.equal(caughtThis, thisObject); assert.equal(kernel.doc, oldDoc); }, "document + function + object": function () { //arrange var iframe = document.createElement("iframe"), caughtArgs, caughtThis, expectedReturn = "expected return", callback = function () { caughtThis = this; caughtArgs = arguments; return expectedReturn; }, functionName = "theFunction", thisObject = { baz: "buz" }, oldDoc = kernel.doc; thisObject[functionName] = callback; document.body.appendChild(iframe); var doc = iframe.contentDocument; //act var result = window.withDoc(doc, functionName, thisObject); //assert assert.equal(result, expectedReturn); assert.deepEqual(caughtArgs.length, 0); assert.equal(caughtThis, thisObject); assert.equal(kernel.doc, oldDoc); } } }); });