X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=test%2Funit%2Fmanipulation.js;h=465686fdfd7b3d06fcd9556ab862a2844591b337;hb=8356871a5522ad59cac80af2ca4695079059b97e;hp=ca185a47ee78c90c211e05eb6b19863859119779;hpb=991dafae16e44512c5107b90bc8ce9675d8f5c12;p=jquery.git diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index ca185a4..465686f 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -10,7 +10,7 @@ test("text()", function() { }); var testWrap = function(val) { - expect(12); + expect(15); var defaultText = 'Try them out:' var result = jQuery('#first').wrap(val( '
' )).text(); equals( defaultText, result, 'Check for wrapping of on-the-fly html' ); @@ -45,6 +45,12 @@ var testWrap = function(val) { j = jQuery("").wrap("
test
"); equals( j[0].previousSibling.nodeType, 3, "Make sure the previous node is a text element" ); equals( j[0].parentNode.nodeName.toUpperCase(), "DIV", "And that we're in the div element." ); + + // Try to wrap an element with multiple elements (should fail) + j = jQuery("
").children().wrap("

"); + equals( j[0].parentNode.parentNode.childNodes.length, 1, "There should only be one element wrapping." ); + equals( j.length, 1, "There should only be one element (no cloning)." ); + equals( j[0].parentNode.nodeName.toUpperCase(), "P", "The span should be in the paragraph." ); } test("wrap(String|Element)", function() { @@ -59,7 +65,7 @@ var testWrapAll = function(val) { expect(8); var prev = jQuery("#firstp")[0].previousSibling; var p = jQuery("#firstp,#first")[0].parentNode; - + var result = jQuery('#firstp,#first').wrapAll(val( '
' )); equals( 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"' ); @@ -73,7 +79,7 @@ var testWrapAll = function(val) { var result = jQuery('#firstp,#first').wrapAll(val( document.getElementById('empty') )); equals( jQuery("#first").parent()[0], jQuery("#firstp").parent()[0], "Same Parent" ); equals( jQuery("#first").parent()[0].previousSibling, prev, "Correct Previous Sibling" ); - equals( jQuery("#first").parent()[0].parentNode, p, "Correct Parent" ); + equals( jQuery("#first").parent()[0].parentNode, p, "Correct Parent" ); } test("wrapAll(String|Element)", function() { @@ -98,7 +104,7 @@ var testWrapInner = function(val) { var result = jQuery('#first').wrapInner(document.getElementById('empty')); equals( jQuery("#first").children().length, 1, "Only one child" ); ok( jQuery("#first").children().is("#empty"), "Verify Right Element" ); - equals( jQuery("#first").children().children().length, num, "Verify Elements Intact" ); + equals( jQuery("#first").children().children().length, num, "Verify Elements Intact" ); } test("wrapInner(String|Element)", function() { @@ -244,7 +250,7 @@ test("appendTo(String|Element|Array<Element>|jQuery)", function() { var div = jQuery("
").appendTo("#main, #moretests"); equals( div.length, 2, "appendTo returns the inserted elements" ); - + div.addClass("test"); ok( jQuery("#main div:last").hasClass("test"), "appendTo element was modified after the insertion" ); @@ -314,7 +320,7 @@ test("prependTo(String|Element|Array<Element>|jQuery)", function() { }); var testBefore = function(val) { - expect(4); + expect(6); var expected = 'This is a normal link: bugaYahoo'; jQuery('#yahoo').before(val( 'buga' )); equals( expected, jQuery('#en').text(), 'Insert String before' ); @@ -333,6 +339,10 @@ var testBefore = function(val) { expected = "This is a normal link: diveintomarkTry them out:Yahoo"; jQuery('#yahoo').before(val( jQuery("#first, #mark") )); equals( expected, jQuery('#en').text(), "Insert jQuery before" ); + + var set = jQuery("
").before(val("test")); + equals( set[0].nodeName.toLowerCase(), "span", "Insert the element before the disconnected node." ); + equals( set.length, 2, "Insert the element before the disconnected node." ); } test("before(String|Element|Array<Element>|jQuery)", function() { @@ -366,7 +376,7 @@ test("insertBefore(String|Element|Array<Element>|jQuery)", function() { }); var testAfter = function(val) { - expect(4); + expect(6); var expected = 'This is a normal link: Yahoobuga'; jQuery('#yahoo').after(val( 'buga' )); equals( expected, jQuery('#en').text(), 'Insert String after' ); @@ -384,7 +394,11 @@ var testAfter = function(val) { reset(); expected = "This is a normal link: YahoodiveintomarkTry them out:"; jQuery('#yahoo').after(val( jQuery("#first, #mark") )); - equals( expected, jQuery('#en').text(), "Insert jQuery after" ); + equals( expected, jQuery('#en').text(), "Insert jQuery after" ); + + var set = jQuery("
").after(val("test")); + equals( set[1].nodeName.toLowerCase(), "span", "Insert the element after the disconnected node." ); + equals( set.length, 2, "Insert the element after the disconnected node." ); }; test("after(String|Element|Array<Element>|jQuery)", function() { @@ -418,7 +432,7 @@ test("insertAfter(String|Element|Array<Element>|jQuery)", function() { }); var testReplaceWith = function(val) { - expect(10); + expect(12); jQuery('#yahoo').replaceWith(val( 'buga' )); ok( jQuery("#replace")[0], 'Replace element with string' ); ok( !jQuery("#yahoo")[0], 'Verify that original element is gone, after string' ); @@ -438,7 +452,11 @@ var testReplaceWith = function(val) { jQuery('#yahoo').replaceWith(val( jQuery("#first, #mark") )); ok( jQuery("#first")[0], 'Replace element with set of elements' ); ok( jQuery("#mark")[0], 'Replace element with set of elements' ); - ok( !jQuery("#yahoo")[0], 'Verify that original element is gone, after set of elements' ); + ok( !jQuery("#yahoo")[0], 'Verify that original element is gone, after set of elements' ); + + var set = jQuery("
").replaceWith(val("test")); + equals( set[0].nodeName.toLowerCase(), "span", "Replace the disconnected node." ); + equals( set.length, 1, "Replace the disconnected node." ); } test("replaceWith(String|Element|Array<Element>|jQuery)", function() { @@ -454,7 +472,7 @@ test("replaceAll(String|Element|Array<Element>|jQuery)", function() { jQuery('buga').replaceAll("#yahoo"); ok( jQuery("#replace")[0], 'Replace element with string' ); ok( !jQuery("#yahoo")[0], 'Verify that original element is gone, after string' ); - + reset(); jQuery(document.getElementById('first')).replaceAll("#yahoo"); ok( jQuery("#first")[0], 'Replace element with element' ); @@ -543,24 +561,24 @@ test("val()", function() { document.getElementById('text1').value = "bla"; equals( jQuery("#text1").val(), "bla", "Check for modified value of input element" ); - + reset(); equals( jQuery("#text1").val(), "Test", "Check for value of input element" ); // ticket #1714 this caused a JS error in IE equals( jQuery("#first").val(), "", "Check a paragraph element to see if it has a value" ); ok( jQuery([]).val() === undefined, "Check an empty jQuery object will return undefined from val" ); - + equals( jQuery('#select2').val(), '3', 'Call val() on a single="single" select' ); isSet( jQuery('#select3').val(), ['1', '2'], 'Call val() on a multiple="multiple" select' ); equals( jQuery('#option3c').val(), '2', 'Call val() on a option element with value' ); - + equals( jQuery('#option3a').val(), '', 'Call val() on a option element with empty value' ); - + equals( jQuery('#option3e').val(), 'no value', 'Call val() on a option element with no value attribute' ); - + }); var testVal = function(valueObj) { @@ -568,7 +586,7 @@ var testVal = function(valueObj) { jQuery("#text1").val(valueObj( 'test' )); equals( document.getElementById('text1').value, "test", "Check for modified (via val(String)) value of input element" ); - + jQuery("#text1").val(valueObj( 67 )); equals( document.getElementById('text1').value, "67", "Check for modified (via val(Number)) value of input element" ); @@ -595,11 +613,11 @@ test("val(Function)", function() { var testHtml = function(valueObj) { expect(17); - + window.debug = true; - + jQuery.scriptorder = 0; - + var div = jQuery("#main > div"); div.html(valueObj("test")); var pass = true; @@ -607,39 +625,39 @@ var testHtml = function(valueObj) { if ( div.get(i).childNodes.length != 1 ) pass = false; } ok( pass, "Set HTML" ); - + window.debug = false; reset(); // using contents will get comments regular, text, and comment nodes var j = jQuery("#nonnodes").contents(); j.html(valueObj("bold")); - + // this is needed, or the expando added by jQuery unique will yield a different html j.find('b').removeData(); equals( j.html().replace(/ xmlns="[^"]+"/g, "").toLowerCase(), "bold", "Check node,textnode,comment with html()" ); - + jQuery("#main").html(valueObj("