diff --git a/tests/frontend/helper.js b/tests/frontend/helper.js index dcd9bcbbd..196414a9f 100644 --- a/tests/frontend/helper.js +++ b/tests/frontend/helper.js @@ -118,6 +118,13 @@ var helper = {}; return deferred; } + helper.runIn = function($iframe, func){ + var eval = $iframe.window.eval; + var funcStr = "(" + func.toString() + ")()"; + + return eval(funcStr); + } + /* Ensure console.log doesn't blow up in IE, ugly but ok for a test framework imho*/ window.console = window.console || {}; window.console.log = window.console.log || function(){} @@ -126,9 +133,11 @@ var helper = {}; var _it = it; it = function(name, func){ if(func && func.length !== 1){ - throw new Error("Please use always a callback with it() - " + func.toString()); + func = function(){ + throw new Error("Please use always a callback with it() - " + func.toString()); + } } - _it.apply(null, arguments); + _it(name, func); } })() \ No newline at end of file diff --git a/tests/frontend/specs/helper.js b/tests/frontend/specs/helper.js index 7666596a0..220063173 100644 --- a/tests/frontend/specs/helper.js +++ b/tests/frontend/specs/helper.js @@ -1,7 +1,32 @@ describe("the test helper", function(){ + describe("the runIn method", function(){ + it("runs the function in the correct iframe", function(done){ + this.timeout(5000); + + helper.newPad(function(){ + var chromeLength = helper.runIn(helper.padChrome$, function(){ + return $("#editbar").length; + }); + + var outerLength = helper.runIn(helper.padOuter$, function(){ + return $("#outerdocbody").length; + }); + + var innerLength = helper.runIn(helper.padInner$, function(){ + return $("#innerdocbody").length; + }); + + expect(chromeLength).to.be(1); + expect(outerLength).to.be(1); + expect(innerLength).to.be(1); + done(); + }); + }); + }); + describe("the newPad method", function(){ xit("doesn't leak memory if you creates iframes over and over again", function(done){ - this.timeout(200000); + this.timeout(100000); var times = 10;