Make sure that &#...; entities are encoded properly. Fixes #6042.
[jquery.git] / test / unit / manipulation.js
index bbf9a3a..e6e6c8d 100644 (file)
@@ -650,7 +650,7 @@ test("insertAfter(String|Element|Array<Element>|jQuery)", function() {
 });
 
 var testReplaceWith = function(val) {
-       expect(15);
+       expect(17);
        jQuery('#yahoo').replaceWith(val( '<b id="replace">buga</b>' ));
        ok( jQuery("#replace")[0], 'Replace element with string' );
        ok( !jQuery("#yahoo")[0], 'Verify that original element is gone, after string' );
@@ -661,6 +661,12 @@ var testReplaceWith = function(val) {
        ok( !jQuery("#yahoo")[0], 'Verify that original element is gone, after element' );
 
        reset();
+       jQuery("#main").append('<div id="bar"><div id="baz">Foo</div></div>');
+       jQuery('#baz').replaceWith("Baz");
+       equals( jQuery("#bar").text(),"Baz", 'Replace element with text' );
+       ok( !jQuery("#baz")[0], 'Verify that original element is gone, after element' );
+
+       reset();
        jQuery('#yahoo').replaceWith(val( [document.getElementById('first'), document.getElementById('mark')] ));
        ok( jQuery("#first")[0], 'Replace element with array of elements' );
        ok( jQuery("#mark")[0], 'Replace element with array of elements' );
@@ -720,7 +726,27 @@ test("replaceWith(String|Element|Array&lt;Element&gt;|jQuery)", function() {
 
 test("replaceWith(Function)", function() {
        testReplaceWith(functionReturningObj);
-})
+
+       expect(18);
+
+       var y = jQuery("#yahoo")[0];
+
+       jQuery(y).replaceWith(function(){
+               equals( this, y, "Make sure the context is coming in correctly." );
+       });
+
+       reset();
+});
+
+test("replaceWith(string) for more than one element", function(){
+       expect(3);
+
+       equals(jQuery('#foo p').length, 3, 'ensuring that test data has not changed');
+
+       jQuery('#foo p').replaceWith('<span>bar</span>');
+       equals(jQuery('#foo span').length, 3, 'verify that all the three original element have been replaced');
+       equals(jQuery('#foo p').length, 0, 'verify that all the three original element have been replaced');
+});
 
 test("replaceAll(String|Element|Array&lt;Element&gt;|jQuery)", function() {
        expect(10);
@@ -747,7 +773,7 @@ test("replaceAll(String|Element|Array&lt;Element&gt;|jQuery)", function() {
 });
 
 test("clone()", function() {
-       expect(30);
+       expect(31);
        equals( 'This is a normal link: Yahoo', jQuery('#en').text(), 'Assert text for #en' );
        var clone = jQuery('#yahoo').clone();
        equals( 'Try them out:Yahoo', jQuery('#first').append(clone).text(), 'Check for clone' );
@@ -797,6 +823,14 @@ test("clone()", function() {
        div = div.clone(true);
        equals( div.data("a"), true, "Data cloned." );
        equals( div.data("b"), true, "Data cloned." );
+
+       var form = document.createElement("form");
+       form.action = "/test/";
+       var div = document.createElement("div");
+       div.appendChild( document.createTextNode("test") );
+       form.appendChild( div );
+
+       equals( jQuery(form).clone().children().length, 1, "Make sure we just get the form back." );
 });
 
 if (!isLocal) {
@@ -817,7 +851,7 @@ test("clone() on XML nodes", function() {
 }
 
 var testHtml = function(valueObj) {
-       expect(24);
+       expect(26);
 
        jQuery.scriptorder = 0;
 
@@ -834,6 +868,9 @@ var testHtml = function(valueObj) {
        equals( div.children().length, 2, "Make sure two child nodes exist." );
        equals( div.children().children().length, 1, "Make sure that a grandchild exists." );
 
+       equals( jQuery("<div/>").html(valueObj("&#160;"))[0].innerHTML, "&nbsp;", "Make sure entities are passed through correctly." );
+       equals( jQuery("<div/>").html(valueObj("&amp;"))[0].innerHTML, "&amp;", "Make sure entities are passed through correctly." );
+
        reset();
        // using contents will get comments regular, text, and comment nodes
        var j = jQuery("#nonnodes").contents();