Merge branch 'support_6897' of https://github.com/rwldrn/jquery into rwldrn-support_6897
authorjeresig <jeresig@gmail.com>
Thu, 9 Dec 2010 17:33:26 +0000 (12:33 -0500)
committerjeresig <jeresig@gmail.com>
Thu, 9 Dec 2010 17:33:26 +0000 (12:33 -0500)
1  2 
test/unit/attributes.js

diff --combined test/unit/attributes.js
@@@ -3,8 -3,33 +3,33 @@@ module("attributes")
  var bareObj = function(value) { return value; };
  var functionReturningObj = function(value) { return (function() { return value; }); };
  
+ test("jQuery.props: itegrity test", function() {
+   
+   expect(1);
+   
+   //  This must be maintained and equal jQuery.props
+   //  Ensure that accidental or erroneous property 
+   //  overwrites don't occur
+   //  This is simply for better code coverage and future proofing. 
+   var propsShouldBe = {
+     "for": "htmlFor",
+     "class": "className",
+     readonly: "readOnly",
+     maxlength: "maxLength",
+     cellspacing: "cellSpacing",
+     rowspan: "rowSpan",
+     colspan: "colSpan",
+     tabindex: "tabIndex",
+     usemap: "useMap",
+     frameborder: "frameBorder"
+   };
+   
+   same(propsShouldBe, jQuery.props, "jQuery.props passes integrity check");
+ });
  test("attr(String)", function() {
 -      expect(31);
 +      expect(37);
  
        // This one sometimes fails randomly ?!
        equals( jQuery('#text1').attr('value'), "Test", 'Check for value attribute' );
        ok( jQuery().attr("doesntexist") === undefined, "Make sure undefined is returned when no element is there." );
  
        equals( jQuery(document).attr("nodeName"), "#document", "attr works correctly on document nodes (bug #7451)." );
 +
 +      var attributeNode = document.createAttribute("irrelevant"),
 +              commentNode = document.createComment("some comment"),
 +              textNode = document.createTextNode("some text"),
 +              obj = {};
 +      jQuery.each( [document, attributeNode, commentNode, textNode, obj, "#firstp"], function( i, ele ) {
 +              strictEqual( jQuery(ele).attr("nonexisting"), undefined, "attr works correctly for non existing attributes (bug #7500)." );
 +      });
  });
  
  if ( !isLocal ) {
@@@ -108,7 -125,7 +133,7 @@@ test("attr(Hash)", function() 
  });
  
  test("attr(String, Object)", function() {
 -      expect(24);
 +      expect(30);
  
        var div = jQuery("div").attr("foo", "bar"),
                fail = false;
        jQuery("#name").attr('maxLength', '10');
        equals( document.getElementById('name').maxLength, '10', 'Set maxlength attribute' );
  
 +      var attributeNode = document.createAttribute("irrelevant"),
 +              commentNode = document.createComment("some comment"),
 +              textNode = document.createTextNode("some text"),
 +              obj = {};
 +      jQuery.each( [document, attributeNode, obj, "#firstp"], function( i, ele ) {
 +              var $ele = jQuery( ele );
 +              $ele.attr( "nonexisting", "foo" );
 +              equal( $ele.attr("nonexisting"), "foo", "attr(name, value) works correctly for non existing attributes (bug #7500)." );
 +      });
 +      jQuery.each( [commentNode, textNode], function( i, ele ) {
 +              var $ele = jQuery( ele );
 +              $ele.attr( "nonexisting", "foo" );
 +              strictEqual( $ele.attr("nonexisting"), undefined, "attr(name, value) works correctly on comment and text nodes (bug #7500)." );
 +      });
 +      //cleanup
 +      jQuery.each( [document, "#firstp"], function( i, ele ) {
 +              jQuery( ele ).removeAttr("nonexisting");
 +      });
 +
        var table = jQuery('#table').append("<tr><td>cell</td></tr><tr><td>cell</td><td>cell</td></tr><tr><td>cell</td><td>cell</td></tr>"),
                td = table.find('td:first');
        td.attr("rowspan", "2");
@@@ -331,26 -329,8 +356,26 @@@ test("attr('tabindex', value)", functio
  });
  
  test("removeAttr(String)", function() {
 -      expect(1);
 +      expect(7);
        equals( jQuery('#mark').removeAttr( "class" )[0].className, "", "remove class" );
 +
 +      var attributeNode = document.createAttribute("irrelevant"),
 +              commentNode = document.createComment("some comment"),
 +              textNode = document.createTextNode("some text"),
 +              obj = {};
 +      //removeAttr only really removes on DOM element nodes handle all other seperatyl
 +      strictEqual( jQuery( "#firstp" ).attr( "nonexisting", "foo" ).removeAttr( "nonexisting" )[0].nonexisting, undefined, "removeAttr works correctly on DOM element nodes" );
 +
 +      jQuery.each( [document, attributeNode, obj], function( i, ele ) {
 +              var $ele = jQuery( ele );
 +              $ele.attr( "nonexisting", "foo" ).removeAttr( "nonexisting" );
 +              strictEqual( ele.nonexisting, "", "removeAttr works correctly on non DOM element nodes (bug #7500)." );
 +      });
 +      jQuery.each( [commentNode, textNode], function( i, ele ) {
 +              $ele = jQuery( ele );
 +              $ele.attr( "nonexisting", "foo" ).removeAttr( "nonexisting" );
 +              strictEqual( ele.nonexisting, undefined, "removeAttr works correctly on non DOM element nodes (bug #7500)." );
 +      });
  });
  
  test("val()", function() {
@@@ -764,7 -744,7 +789,7 @@@ test("toggleClass(Fucntion[, boolean]) 
  });
  
  test("addClass, removeClass, hasClass", function() {
 -      expect(14);
 +      expect(17);
   
        var jq = jQuery("<p>Hi</p>"), x = jq[0];
   
        ok( jq.hasClass("hi"), "Check has1" );
        ok( jq.hasClass("bar"), "Check has2" );
   
 -      var jq = jQuery("<p class='class1\nclass2\tcla.ss3\n'></p>");
 -      ok( jq.hasClass("class1"), "Check hasClass with carriage return" );
 -      ok( jq.is(".class1"), "Check is with carriage return" );
 +      var jq = jQuery("<p class='class1\nclass2\tcla.ss3\n\rclass4'></p>");
 +      ok( jq.hasClass("class1"), "Check hasClass with line feed" );
 +      ok( jq.is(".class1"), "Check is with line feed" );
        ok( jq.hasClass("class2"), "Check hasClass with tab" );
        ok( jq.is(".class2"), "Check is with tab" );
        ok( jq.hasClass("cla.ss3"), "Check hasClass with dot" );
 +      ok( jq.hasClass("class4"), "Check hasClass with carriage return" );
 +      ok( jq.is(".class4"), "Check is with carriage return" );
   
        jq.removeClass("class2");
        ok( jq.hasClass("class2")==false, "Check the class has been properly removed" );
        ok( jq.hasClass("cla.ss3"), "Check the dotted class has not been removed" );
        jq.removeClass("cla.ss3");
        ok( jq.hasClass("cla.ss3")==false, "Check the dotted class has been removed" );
 +      jq.removeClass("class4");
 +      ok( jq.hasClass("class4")==false, "Check the class has been properly removed" );
  });