diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2012-04-21 17:49:11 +0200 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2012-04-21 17:49:11 +0200 |
commit | ce3c7fab938c755b10d5e55bddccdde1be4819f1 (patch) | |
tree | f79ec90750a9d52039b0d3139d674aa417cc57e5 /tests/unit/qunit-composite.js | |
parent | 2357d6d8da9a3640852ae4fe3448ca68d85540b8 (diff) | |
download | jquery-ui-ce3c7fab938c755b10d5e55bddccdde1be4819f1.tar.gz jquery-ui-ce3c7fab938c755b10d5e55bddccdde1be4819f1.zip |
Update to official qunit composite addon
Diffstat (limited to 'tests/unit/qunit-composite.js')
-rw-r--r-- | tests/unit/qunit-composite.js | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/tests/unit/qunit-composite.js b/tests/unit/qunit-composite.js new file mode 100644 index 000000000..5b753e2ee --- /dev/null +++ b/tests/unit/qunit-composite.js @@ -0,0 +1,102 @@ +(function( QUnit ) { + +QUnit.extend( QUnit, { + testSuites: function( suites ) { + QUnit.begin(function() { + QUnit.initIframe(); + }); + + for ( var i = 0; i < suites.length; i++ ) { + (function( suite ) { + asyncTest( suite, function() { + QUnit.runSuite( suite ); + }); + }( suites[i] ) ); + } + QUnit.done(function() { + this.iframe.style.display = "none"; + }); + }, + + runSuite: function( suite ) { + this.iframe.setAttribute( "src", suite ); + }, + + initIframe: function() { + var body = document.body, + iframe = this.iframe = document.createElement( "iframe" ), + iframeWin; + + iframe.className = "qunit-subsuite"; + body.appendChild( iframe ); + + function onIframeLoad() { + var module, test, + count = 0; + + + iframeWin.QUnit.moduleStart(function( data ) { + // capture module name for messages + module = data.name; + }); + + iframeWin.QUnit.testStart(function( data ) { + // capture test name for messages + test = data.name; + }); + iframeWin.QUnit.testDone(function() { + test = null; + }); + + iframeWin.QUnit.log(function( data ) { + if (test === null) { + return; + } + // pass all test details through to the main page + var message = module + ": " + test + ": " + data.message; + expect( ++count ); + QUnit.push( data.result, data.actual, data.expected, message ); + }); + + iframeWin.QUnit.done(function() { + // start the wrapper test from the main page + start(); + }); + } + QUnit.addEvent( iframe, "load", onIframeLoad ); + + iframeWin = iframe.contentWindow; + } +}); + +QUnit.testStart(function( data ) { + // update the test status to show which test suite is running + QUnit.id( "qunit-testresult" ).innerHTML = "Running " + data.name + "...<br> "; +}); + +QUnit.testDone(function() { + var current = QUnit.id( this.config.current.id ), + children = current.children, + src = this.iframe.src; + + // undo the auto-expansion of failed tests + for ( var i = 0; i < children.length; i++ ) { + if ( children[i].nodeName === "OL" ) { + children[i].style.display = "none"; + } + } + + QUnit.addEvent(current, "dblclick", function( e ) { + var target = e && e.target ? e.target : window.event.srcElement; + if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) { + target = target.parentNode; + } + if ( window.location && target.nodeName.toLowerCase() === "strong" ) { + window.location = src; + } + }); + + current.getElementsByTagName('a')[0].href = src; +}); + +}( QUnit ) ); |