Commit 305eefe6 authored by cjqed's avatar cjqed Committed by Oleg

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

Closes gh-1470
Ref #1457
parent 3140d3bd
......@@ -13,7 +13,7 @@ var oldStart = window.start,
expectedDataKeys = {},
splice = [].splice,
reset = QUnit.reset,
reset,
ajaxSettings = jQuery.ajaxSettings;
......@@ -157,8 +157,7 @@ window.moduleTeardown = function() {
oldActive = jQuery.active;
}
// Allow QUnit.reset to clean up any attached elements before checking for leaks
QUnit.reset();
reset();
for ( i in jQuery.cache ) {
++cacheLength;
......@@ -187,8 +186,8 @@ QUnit.done(function() {
supportjQuery("#qunit ~ *").remove();
});
// jQuery-specific QUnit.reset
QUnit.reset = function() {
// jQuery-specific post-test cleanup
reset = function() {
// Ensure jQuery events and data on the fixture are properly removed
jQuery("#qunit-fixture").empty();
......@@ -206,10 +205,11 @@ QUnit.reset = function() {
// Cleanup globals
Globals.cleanup();
// Let QUnit reset the fixture
reset.apply( this, arguments );
jQuery("#qunit-fixture")[0].innerHTML = QUnit.config.fixture;
};
QUnit.testDone(reset);
// Register globals for cleanup and the cleanup code itself
// Explanation at http://perfectionkills.com/understanding-delete/#ie_bugs
window.Globals = (function() {
......@@ -351,7 +351,7 @@ function testSubproject( label, subProjectURL, risTests, complete ) {
// WARNING: UNDOCUMENTED INTERFACE
QUnit.config.fixture = fixtureHTML;
QUnit.reset();
reset();
if ( supportjQuery("#qunit-fixture").html() !== fixtureHTML ) {
ok( false, "Copied subproject fixture" );
return;
......@@ -359,7 +359,6 @@ function testSubproject( label, subProjectURL, risTests, complete ) {
fixtureReplaced = true;
}
fn.apply( this, arguments );
};
}
......
......@@ -639,7 +639,7 @@ test( "removeAttr(Multi String, variable space width)", 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", "Test2" ).prop("defaultValue"), "Test", "Check for defaultValue attribute" );
......@@ -667,7 +667,11 @@ test( "prop(String, Object)", function() {
equal( jQuery("#table").prop("useMap"), 1, "Check setting and retrieving useMap" );
jQuery("#table").prop( "frameborder", 1 );
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,
body = document.body,
......@@ -799,16 +803,19 @@ test( "removeProp(String)", function() {
});
});
test( "val()", function() {
expect( 21 + ( jQuery.fn.serialize ? 6 : 0 ) );
var checks, $button;
test( "val() after modification", function() {
expect( 1 );
document.getElementById("text1").value = "bla";
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" );
// ticket #1714 this caused a JS error in IE
equal( jQuery("#first").val(), "", "Check a paragraph element to see if it has a value" );
......@@ -923,7 +930,6 @@ if ( "value" in document.createElement("meter") &&
var testVal = function( valueObj ) {
expect( 8 );
QUnit.reset();
jQuery("#text1").val( valueObj("test") );
equal( document.getElementById("text1").value, "test", "Check for modified (via val(String)) value of input element" );
......@@ -978,7 +984,6 @@ test( "val(Array of Numbers) (Bug #7123)", function() {
test( "val(Function) with incoming value", function() {
expect( 10 );
QUnit.reset();
var oldVal = jQuery("#text1").val();
jQuery("#text1").val(function( i, val ) {
......
......@@ -592,7 +592,6 @@ test("jQuery('html')", function() {
var s, div, j;
QUnit.reset();
jQuery["foo"] = false;
s = jQuery("<script>jQuery.foo='test';</script>")[0];
ok( s, "Creating a script" );
......@@ -608,7 +607,6 @@ test("jQuery('html')", function() {
equal( div.childNodes[1].nodeType, 1, "Paragraph." );
equal( div.childNodes[1].firstChild.nodeType, 3, "Paragraph text." );
QUnit.reset();
ok( jQuery("<link rel='stylesheet'/>")[0], "Creating a link" );
ok( !jQuery("<script/>")[0].parentNode, "Create a script" );
......
......@@ -431,9 +431,9 @@ test("css(Object) where values are Functions with incoming values", function() {
});
test("show(); hide()", function() {
expect(22);
expect( 4 );
var hiddendiv, div, pass, old, test;
var hiddendiv, div;
hiddendiv = jQuery("div.hidden");
hiddendiv.hide();
......@@ -446,8 +446,13 @@ test("show(); hide()", function() {
div.appendTo("#qunit-fixture").show();
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");
equal(jQuery.css( hiddendiv[0], "display"), "none", "hiddendiv is display: none");
......@@ -666,7 +671,6 @@ test("toggle()", function() {
test("hide hidden elements (bug #7141)", function() {
expect(3);
QUnit.reset();
var div = jQuery("<div style='display:none'></div>").appendTo("#qunit-fixture");
equal( div.css("display"), "none", "Element is hidden by default" );
......
......@@ -124,7 +124,7 @@ test("show()", 27, function () {
test("show(Number) - other displays", function() {
expect(15);
QUnit.reset();
stop();
// #show-tests * is set display: none in CSS
......@@ -171,7 +171,7 @@ test("show(Number) - other displays", function() {
// Supports #7397
test("Persist correct display value", function() {
expect(3);
QUnit.reset();
stop();
// #show-tests * is set display: none in CSS
......@@ -1310,7 +1310,7 @@ test("animate with CSS shorthand properties", function(){
test("hide hidden elements, with animation (bug #7141)", function() {
expect(3);
QUnit.reset();
stop();
var div = jQuery("<div style='display:none'></div>").appendTo("#qunit-fixture");
......
This diff is collapsed.
......@@ -31,12 +31,10 @@ function testWrap( val ) {
equal( defaultText, result, "Check for wrapping of on-the-fly html" );
ok( jQuery("#first").parent().parent().is(".red"), "Check if wrapper has class 'red'" );
QUnit.reset();
result = jQuery("#first").wrap( val(document.getElementById("empty")) ).parent();
ok( result.is("ol"), "Check for element wrapping" );
equal( result.text(), defaultText, "Check for element wrapping" );
QUnit.reset();
jQuery("#check1").on( "click", function() {
var checkbox = this;
......@@ -97,8 +95,6 @@ function testWrap( val ) {
j.parent().trigger("click");
// clean up attached elements
QUnit.reset();
}
test( "wrap(String|Element)", function() {
......@@ -136,15 +132,15 @@ test( "wrap(String) consecutive elements (#10177)", function() {
});
});
function testWrapAll( val ) {
test( "wrapAll(String)", function() {
expect( 8 );
expect( 5 );
var prev, p, result;
prev = jQuery("#firstp")[ 0 ].previousSibling;
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" );
ok( jQuery("#first").parent().parent().is(".red"), "Check if wrapper has class 'red'" );
......@@ -152,25 +148,67 @@ function testWrapAll( val ) {
equal( jQuery("#first").parent().parent()[ 0 ].previousSibling, prev, "Correct Previous Sibling" );
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;
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 ].previousSibling, prev, "Correct Previous Sibling" );
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" );
num = jQuery("#first").html("foo<div>test</div><div>test2</div>").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( "wrapInner(Element)", function() {
expect( 5 );
var num,
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" );
test( "wrapAll(String|Element)", function() {
testWrapAll( manipulationBareObj );
div.wrapInner( "<span></span>" );
equal( div.children().length, 1, "The contents were wrapped." );
equal( div.children()[ 0 ].nodeName.toLowerCase(), "span", "A span was inserted." );
});
function testWrapInner( val ) {
test( "wrapInner(Function) returns String", function() {
expect( 11 );
expect( 6 );
var num, div;
var num,
val = manipulationFunctionReturningObj;
num = jQuery("#first").children().length;
jQuery("#first").wrapInner( val("<div class='red'><div id='tmp'></div></div>") );
......@@ -179,32 +217,30 @@ function testWrapInner( val ) {
ok( jQuery("#first").children().is(".red"), "Verify Right Element" );
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;
jQuery("#first").wrapInner( val("<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( "wrapInner(Function) returns Element", function() {
expect( 5 );
var num,
val = manipulationFunctionReturningObj,
div = jQuery("<div/>");
QUnit.reset();
num = jQuery("#first").children().length;
jQuery("#first").wrapInner( val(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 = jQuery("<div/>");
div.wrapInner( val("<span></span>") );
equal( div.children().length, 1, "The contents were wrapped." );
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() {
......
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