Commit 537e9ced authored by cjqed's avatar cjqed Committed by Dave Methvin

Tests: Avoid use of QUnit.reset() in tests by splitting them

Fix #14040
Close gh-1457
parent 23db9944
...@@ -213,3 +213,4 @@ Ilya Kantor <iliakan@gmail.com> ...@@ -213,3 +213,4 @@ Ilya Kantor <iliakan@gmail.com>
hongymagic <d.hong@me.com> hongymagic <d.hong@me.com>
John Paul <john@johnkpaul.com> John Paul <john@johnkpaul.com>
Jakob Stoeck <jakob@pokermania.de> Jakob Stoeck <jakob@pokermania.de>
Christopher Jones <chris@cjqed.com>
...@@ -11,9 +11,8 @@ var oldStart = window.start, ...@@ -11,9 +11,8 @@ var oldStart = window.start,
oldActive = 0, oldActive = 0,
expectedDataKeys = {}, expectedDataKeys = {},
reset,
splice = [].splice, splice = [].splice,
reset = QUnit.reset,
ajaxSettings = jQuery.ajaxSettings; ajaxSettings = jQuery.ajaxSettings;
...@@ -157,8 +156,6 @@ window.moduleTeardown = function() { ...@@ -157,8 +156,6 @@ window.moduleTeardown = function() {
oldActive = jQuery.active; oldActive = jQuery.active;
} }
// Allow QUnit.reset to clean up any attached elements before checking for leaks
QUnit.reset();
for ( i in jQuery.cache ) { for ( i in jQuery.cache ) {
++cacheLength; ++cacheLength;
...@@ -187,8 +184,8 @@ QUnit.done(function() { ...@@ -187,8 +184,8 @@ QUnit.done(function() {
supportjQuery("#qunit ~ *").remove(); supportjQuery("#qunit ~ *").remove();
}); });
// jQuery-specific QUnit.reset // jQuery-specific post-test cleanup
QUnit.reset = function() { reset = function () {
// Ensure jQuery events and data on the fixture are properly removed // Ensure jQuery events and data on the fixture are properly removed
jQuery("#qunit-fixture").empty(); jQuery("#qunit-fixture").empty();
...@@ -205,11 +202,11 @@ QUnit.reset = function() { ...@@ -205,11 +202,11 @@ QUnit.reset = function() {
// Cleanup globals // Cleanup globals
Globals.cleanup(); Globals.cleanup();
jQuery("#qunit-fixture")[0].innerHTML = QUnit.config.fixture;
// Let QUnit reset the fixture
reset.apply( this, arguments );
}; };
QUnit.testDone(reset);
// Register globals for cleanup and the cleanup code itself // Register globals for cleanup and the cleanup code itself
// Explanation at http://perfectionkills.com/understanding-delete/#ie_bugs // Explanation at http://perfectionkills.com/understanding-delete/#ie_bugs
window.Globals = (function() { window.Globals = (function() {
...@@ -351,12 +348,11 @@ function testSubproject( label, subProjectURL, risTests, complete ) { ...@@ -351,12 +348,11 @@ function testSubproject( label, subProjectURL, risTests, complete ) {
// WARNING: UNDOCUMENTED INTERFACE // WARNING: UNDOCUMENTED INTERFACE
QUnit.config.fixture = fixtureHTML; QUnit.config.fixture = fixtureHTML;
QUnit.reset(); reset();
if ( supportjQuery("#qunit-fixture").html() !== fixtureHTML ) { if ( supportjQuery("#qunit-fixture").html() !== fixtureHTML ) {
ok( false, "Copied subproject fixture" ); ok( false, "Copied subproject fixture" );
return; return;
} }
fixtureReplaced = true; fixtureReplaced = true;
} }
......
...@@ -635,7 +635,8 @@ test( "removeAttr(Multi String, variable space width)", function() { ...@@ -635,7 +635,8 @@ test( "removeAttr(Multi String, variable space width)", function() {
}); });
test( "prop(String, Object)", function() { test( "prop(String, Object)", function() {
expect( 31 );
expect( 17 );
equal( jQuery("#text1").prop("value"), "Test", "Check for value attribute" ); equal( jQuery("#text1").prop("value"), "Test", "Check for value attribute" );
equal( jQuery("#text1").prop( "value", "Test2" ).prop("defaultValue"), "Test", "Check for defaultValue attribute" ); equal( jQuery("#text1").prop( "value", "Test2" ).prop("defaultValue"), "Test", "Check for defaultValue attribute" );
...@@ -663,7 +664,11 @@ test( "prop(String, Object)", function() { ...@@ -663,7 +664,11 @@ test( "prop(String, Object)", function() {
equal( jQuery("#table").prop("useMap"), 1, "Check setting and retrieving useMap" ); equal( jQuery("#table").prop("useMap"), 1, "Check setting and retrieving useMap" );
jQuery("#table").prop( "frameborder", 1 ); jQuery("#table").prop( "frameborder", 1 );
equal( jQuery("#table").prop("frameBorder"), 1, "Check setting and retrieving frameBorder" ); equal( jQuery("#table").prop("frameBorder"), 1, "Check setting and retrieving frameBorder" );
QUnit.reset(); });
test( "prop(String, Object) on null/undefined", function() {
expect( 14 );
var select, optgroup, option, attributeNode, commentNode, textNode, obj, $form, var select, optgroup, option, attributeNode, commentNode, textNode, obj, $form,
body = document.body, body = document.body,
...@@ -795,16 +800,20 @@ test( "removeProp(String)", function() { ...@@ -795,16 +800,20 @@ test( "removeProp(String)", function() {
}); });
}); });
test( "val()", function() { test( "val() after modification", function() {
expect( 21 + ( jQuery.fn.serialize ? 6 : 0 ) );
var checks, $button; expect( 1 );
document.getElementById("text1").value = "bla"; document.getElementById("text1").value = "bla";
equal( jQuery("#text1").val(), "bla", "Check for modified value of input element" ); equal( jQuery("#text1").val(), "bla", "Check for modified value of input element" );
});
QUnit.reset();
test( "val()", function() {
expect( 20 + ( jQuery.fn.serialize ? 6 : 0 ) );
var checks, $button;
equal( jQuery("#text1").val(), "Test", "Check for value of input element" ); equal( jQuery("#text1").val(), "Test", "Check for value of input element" );
// ticket #1714 this caused a JS error in IE // ticket #1714 this caused a JS error in IE
equal( jQuery("#first").val(), "", "Check a paragraph element to see if it has a value" ); equal( jQuery("#first").val(), "", "Check a paragraph element to see if it has a value" );
...@@ -919,7 +928,6 @@ if ( "value" in document.createElement("meter") && ...@@ -919,7 +928,6 @@ if ( "value" in document.createElement("meter") &&
var testVal = function( valueObj ) { var testVal = function( valueObj ) {
expect( 8 ); expect( 8 );
QUnit.reset();
jQuery("#text1").val( valueObj("test") ); jQuery("#text1").val( valueObj("test") );
equal( document.getElementById("text1").value, "test", "Check for modified (via val(String)) value of input element" ); equal( document.getElementById("text1").value, "test", "Check for modified (via val(String)) value of input element" );
...@@ -974,7 +982,6 @@ test( "val(Array of Numbers) (Bug #7123)", function() { ...@@ -974,7 +982,6 @@ test( "val(Array of Numbers) (Bug #7123)", function() {
test( "val(Function) with incoming value", function() { test( "val(Function) with incoming value", function() {
expect( 10 ); expect( 10 );
QUnit.reset();
var oldVal = jQuery("#text1").val(); var oldVal = jQuery("#text1").val();
jQuery("#text1").val(function( i, val ) { jQuery("#text1").val(function( i, val ) {
......
...@@ -587,7 +587,6 @@ test("jQuery('html')", function() { ...@@ -587,7 +587,6 @@ test("jQuery('html')", function() {
var s, div, j; var s, div, j;
QUnit.reset();
jQuery["foo"] = false; jQuery["foo"] = false;
s = jQuery("<script>jQuery.foo='test';</script>")[0]; s = jQuery("<script>jQuery.foo='test';</script>")[0];
ok( s, "Creating a script" ); ok( s, "Creating a script" );
...@@ -603,7 +602,6 @@ test("jQuery('html')", function() { ...@@ -603,7 +602,6 @@ test("jQuery('html')", function() {
equal( div.childNodes[1].nodeType, 1, "Paragraph." ); equal( div.childNodes[1].nodeType, 1, "Paragraph." );
equal( div.childNodes[1].firstChild.nodeType, 3, "Paragraph text." ); equal( div.childNodes[1].firstChild.nodeType, 3, "Paragraph text." );
QUnit.reset();
ok( jQuery("<link rel='stylesheet'/>")[0], "Creating a link" ); ok( jQuery("<link rel='stylesheet'/>")[0], "Creating a link" );
ok( !jQuery("<script/>")[0].parentNode, "Create a script" ); ok( !jQuery("<script/>")[0].parentNode, "Create a script" );
......
...@@ -391,9 +391,10 @@ test("css(Object) where values are Functions with incoming values", function() { ...@@ -391,9 +391,10 @@ test("css(Object) where values are Functions with incoming values", function() {
}); });
test("show(); hide()", function() { test("show(); hide()", function() {
expect(22);
var hiddendiv, div, pass, old, test; expect( 4 );
var hiddendiv, div;
hiddendiv = jQuery("div.hidden"); hiddendiv = jQuery("div.hidden");
hiddendiv.hide(); hiddendiv.hide();
...@@ -406,8 +407,13 @@ test("show(); hide()", function() { ...@@ -406,8 +407,13 @@ test("show(); hide()", function() {
div.appendTo("#qunit-fixture").show(); div.appendTo("#qunit-fixture").show();
equal( div.css("display"), "block", "Pre-hidden div shown" ); equal( div.css("display"), "block", "Pre-hidden div shown" );
QUnit.reset(); });
test("show();", function() {
expect( 18 );
var hiddendiv, div, pass, old, test;
hiddendiv = jQuery("div.hidden"); hiddendiv = jQuery("div.hidden");
equal(jQuery.css( hiddendiv[0], "display"), "none", "hiddendiv is display: none"); equal(jQuery.css( hiddendiv[0], "display"), "none", "hiddendiv is display: none");
...@@ -620,7 +626,6 @@ test("toggle()", function() { ...@@ -620,7 +626,6 @@ test("toggle()", function() {
test("hide hidden elements (bug #7141)", function() { test("hide hidden elements (bug #7141)", function() {
expect(3); expect(3);
QUnit.reset();
var div = jQuery("<div style='display:none'></div>").appendTo("#qunit-fixture"); var div = jQuery("<div style='display:none'></div>").appendTo("#qunit-fixture");
equal( div.css("display"), "none", "Element is hidden by default" ); equal( div.css("display"), "none", "Element is hidden by default" );
......
...@@ -130,7 +130,6 @@ test("show()", 27, function () { ...@@ -130,7 +130,6 @@ test("show()", 27, function () {
test("show(Number) - other displays", function() { test("show(Number) - other displays", function() {
expect(15); expect(15);
QUnit.reset();
// #show-tests * is set display: none in CSS // #show-tests * is set display: none in CSS
jQuery("#qunit-fixture").append("<div id='show-tests'><div><p><a href='#'></a></p><code></code><pre></pre><span></span></div><table><thead><tr><th></th></tr></thead><tbody><tr><td></td></tr></tbody></table><ul><li></li></ul></div><table id='test-table'></table>"); jQuery("#qunit-fixture").append("<div id='show-tests'><div><p><a href='#'></a></p><code></code><pre></pre><span></span></div><table><thead><tr><th></th></tr></thead><tbody><tr><td></td></tr></tbody></table><ul><li></li></ul></div><table id='test-table'></table>");
...@@ -1221,7 +1220,6 @@ test("animate with CSS shorthand properties", function(){ ...@@ -1221,7 +1220,6 @@ test("animate with CSS shorthand properties", function(){
test("hide hidden elements, with animation (bug #7141)", function() { test("hide hidden elements, with animation (bug #7141)", function() {
expect(3); expect(3);
QUnit.reset();
var div = jQuery("<div style='display:none'></div>").appendTo("#qunit-fixture"); var div = jQuery("<div style='display:none'></div>").appendTo("#qunit-fixture");
equal( div.css("display"), "none", "Element is hidden by default" ); equal( div.css("display"), "none", "Element is hidden by default" );
......
This diff is collapsed.
...@@ -31,12 +31,10 @@ function testWrap( val ) { ...@@ -31,12 +31,10 @@ function testWrap( val ) {
equal( defaultText, result, "Check for wrapping of on-the-fly html" ); equal( defaultText, result, "Check for wrapping of on-the-fly html" );
ok( jQuery("#first").parent().parent().is(".red"), "Check if wrapper has class 'red'" ); ok( jQuery("#first").parent().parent().is(".red"), "Check if wrapper has class 'red'" );
QUnit.reset();
result = jQuery("#first").wrap( val(document.getElementById("empty")) ).parent(); result = jQuery("#first").wrap( val(document.getElementById("empty")) ).parent();
ok( result.is("ol"), "Check for element wrapping" ); ok( result.is("ol"), "Check for element wrapping" );
equal( result.text(), defaultText, "Check for element wrapping" ); equal( result.text(), defaultText, "Check for element wrapping" );
QUnit.reset();
jQuery("#check1").on( "click", function() { jQuery("#check1").on( "click", function() {
var checkbox = this; var checkbox = this;
...@@ -95,9 +93,6 @@ function testWrap( val ) { ...@@ -95,9 +93,6 @@ function testWrap( val ) {
equal( j[ 0 ].parentNode.nodeName.toLowerCase(), "div", "Wrapping works." ); equal( j[ 0 ].parentNode.nodeName.toLowerCase(), "div", "Wrapping works." );
j.parent().trigger("click"); j.parent().trigger("click");
// clean up attached elements
QUnit.reset();
} }
test( "wrap(String|Element)", function() { test( "wrap(String|Element)", function() {
...@@ -135,15 +130,15 @@ test( "wrap(String) consecutive elements (#10177)", function() { ...@@ -135,15 +130,15 @@ test( "wrap(String) consecutive elements (#10177)", function() {
}); });
}); });
function testWrapAll( val ) { test( "wrapAll(String)", function() {
expect( 8 ); expect( 5 );
var prev, p, result; var prev, p, result;
prev = jQuery("#firstp")[ 0 ].previousSibling; prev = jQuery("#firstp")[ 0 ].previousSibling;
p = jQuery("#firstp,#first")[ 0 ].parentNode; p = jQuery("#firstp,#first")[ 0 ].parentNode;
result = jQuery("#firstp,#first").wrapAll( val("<div class='red'><div class='tmp'></div></div>") ); result = jQuery("#firstp,#first").wrapAll( "<div class='red'><div class='tmp'></div></div>" );
equal( result.parent().length, 1, "Check for wrapping of on-the-fly html" ); equal( result.parent().length, 1, "Check for wrapping of on-the-fly html" );
ok( jQuery("#first").parent().parent().is(".red"), "Check if wrapper has class 'red'" ); ok( jQuery("#first").parent().parent().is(".red"), "Check if wrapper has class 'red'" );
...@@ -151,27 +146,67 @@ function testWrapAll( val ) { ...@@ -151,27 +146,67 @@ function testWrapAll( val ) {
equal( jQuery("#first").parent().parent()[ 0 ].previousSibling, prev, "Correct Previous Sibling" ); equal( jQuery("#first").parent().parent()[ 0 ].previousSibling, prev, "Correct Previous Sibling" );
equal( jQuery("#first").parent().parent()[ 0 ].parentNode, p, "Correct Parent" ); equal( jQuery("#first").parent().parent()[ 0 ].parentNode, p, "Correct Parent" );
QUnit.reset(); });
test( "wrapAll(Element)", function() {
expect( 3 );
var prev, p;
prev = jQuery("#firstp")[ 0 ].previousSibling; prev = jQuery("#firstp")[ 0 ].previousSibling;
p = jQuery("#first")[ 0 ].parentNode; p = jQuery("#first")[ 0 ].parentNode;
jQuery("#firstp,#first").wrapAll( val(document.getElementById("empty")) ); jQuery("#firstp,#first").wrapAll( document.getElementById("empty") );
equal( jQuery("#first").parent()[ 0 ], jQuery("#firstp").parent()[ 0 ], "Same Parent" ); equal( jQuery("#first").parent()[ 0 ], jQuery("#firstp").parent()[ 0 ], "Same Parent" );
equal( jQuery("#first").parent()[ 0 ].previousSibling, prev, "Correct Previous Sibling" ); equal( jQuery("#first").parent()[ 0 ].previousSibling, prev, "Correct Previous Sibling" );
equal( jQuery("#first").parent()[ 0 ].parentNode, p, "Correct Parent" ); equal( jQuery("#first").parent()[ 0 ].parentNode, p, "Correct Parent" );
} });
test( "wrapInner(String)", function() {
expect( 6 );
var num;
num = jQuery("#first").children().length;
jQuery("#first").wrapInner( "<div class='red'><div id='tmp'></div></div>" );
equal( jQuery("#first").children().length, 1, "Only one child" );
ok( jQuery("#first").children().is(".red"), "Verify Right Element" );
equal( jQuery("#first").children().children().children().length, num, "Verify Elements Intact" );
test( "wrapAll(String|Element)", function() { num = jQuery("#first").html("foo<div>test</div><div>test2</div>").children().length;
testWrapAll( manipulationBareObj ); jQuery("#first").wrapInner( "<div class='red'><div id='tmp'></div></div>" );
equal( jQuery("#first").children().length, 1, "Only one child" );
ok( jQuery("#first").children().is(".red"), "Verify Right Element" );
equal( jQuery("#first").children().children().children().length, num, "Verify Elements Intact" );
}); });
function testWrapInner( val ) { test( "wrapInner(Element)", function() {
expect( 11 ); expect( 5 );
var num, var num,
div = jQuery("<div/>"); div = jQuery("<div/>");
num = jQuery("#first").children().length;
jQuery("#first").wrapInner( document.getElementById("empty") );
equal( jQuery("#first").children().length, 1, "Only one child" );
ok( jQuery("#first").children().is("#empty"), "Verify Right Element" );
equal( jQuery("#first").children().children().length, num, "Verify Elements Intact" );
div.wrapInner( "<span></span>" );
equal( div.children().length, 1, "The contents were wrapped." );
equal( div.children()[ 0 ].nodeName.toLowerCase(), "span", "A span was inserted." );
});
test( "wrapInner(Function) returns String", function() {
expect( 6 );
var num,
val = manipulationFunctionReturningObj;
num = jQuery("#first").children().length; num = jQuery("#first").children().length;
jQuery("#first").wrapInner( val("<div class='red'><div id='tmp'></div></div>") ); jQuery("#first").wrapInner( val("<div class='red'><div id='tmp'></div></div>") );
...@@ -179,14 +214,21 @@ function testWrapInner( val ) { ...@@ -179,14 +214,21 @@ function testWrapInner( val ) {
ok( jQuery("#first").children().is(".red"), "Verify Right Element" ); ok( jQuery("#first").children().is(".red"), "Verify Right Element" );
equal( jQuery("#first").children().children().children().length, num, "Verify Elements Intact" ); equal( jQuery("#first").children().children().children().length, num, "Verify Elements Intact" );
QUnit.reset();
num = jQuery("#first").html("foo<div>test</div><div>test2</div>").children().length; num = jQuery("#first").html("foo<div>test</div><div>test2</div>").children().length;
jQuery("#first").wrapInner( val("<div class='red'><div id='tmp'></div></div>") ); jQuery("#first").wrapInner( val("<div class='red'><div id='tmp'></div></div>") );
equal( jQuery("#first").children().length, 1, "Only one child" ); equal( jQuery("#first").children().length, 1, "Only one child" );
ok( jQuery("#first").children().is(".red"), "Verify Right Element" ); ok( jQuery("#first").children().is(".red"), "Verify Right Element" );
equal( jQuery("#first").children().children().children().length, num, "Verify Elements Intact" ); equal( jQuery("#first").children().children().children().length, num, "Verify Elements Intact" );
});
test( "wrapInner(Function) returns Element", function() {
expect( 5 );
var num,
val = manipulationFunctionReturningObj,
div = jQuery("<div/>");
QUnit.reset();
num = jQuery("#first").children().length; num = jQuery("#first").children().length;
jQuery("#first").wrapInner( val(document.getElementById("empty")) ); jQuery("#first").wrapInner( val(document.getElementById("empty")) );
equal( jQuery("#first").children().length, 1, "Only one child" ); equal( jQuery("#first").children().length, 1, "Only one child" );
...@@ -196,14 +238,6 @@ function testWrapInner( val ) { ...@@ -196,14 +238,6 @@ function testWrapInner( val ) {
div.wrapInner( val("<span></span>") ); div.wrapInner( val("<span></span>") );
equal( div.children().length, 1, "The contents were wrapped." ); equal( div.children().length, 1, "The contents were wrapped." );
equal( div.children()[ 0 ].nodeName.toLowerCase(), "span", "A span was inserted." ); equal( div.children()[ 0 ].nodeName.toLowerCase(), "span", "A span was inserted." );
}
test( "wrapInner(String|Element)", function() {
testWrapInner( manipulationBareObj );
});
test( "wrapInner(Function)", function() {
testWrapInner( manipulationFunctionReturningObj );
}); });
test( "unwrap()", function() { test( "unwrap()", function() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment