aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorColin Snover <github.com@zetafleet.com>2011-02-07 10:48:38 -0600
committerColin Snover <github.com@zetafleet.com>2011-02-07 10:48:38 -0600
commit7acb141ed7f2dedd950bb65acf878098640d081e (patch)
tree89fed709a62740abdd324cbecd0084e8049f0f91 /test
parenta2dbdc1f5438a857c2a9898bd36e4b2de685742e (diff)
downloadjquery-7acb141ed7f2dedd950bb65acf878098640d081e.tar.gz
jquery-7acb141ed7f2dedd950bb65acf878098640d081e.zip
Update $.data to use a function instead of an object when attaching to JS objects in order to hide attached metadata from JSON.stringify. Remove event.js code that was doing this before specifically for events, which is now redundant. Fixes #8108. 1.5-stable
Diffstat (limited to 'test')
-rw-r--r--test/unit/data.js23
-rw-r--r--test/unit/event.js5
2 files changed, 21 insertions, 7 deletions
diff --git a/test/unit/data.js b/test/unit/data.js
index 889fc2da3..1ce512c42 100644
--- a/test/unit/data.js
+++ b/test/unit/data.js
@@ -22,7 +22,7 @@ function dataTests (elem) {
strictEqual( jQuery.hasData(elem), false, "jQuery.hasData agrees no data exists initially" );
var dataObj = jQuery.data(elem);
- equals( typeof dataObj, "object", "Calling data with no args gives us a data object reference" );
+ equals( typeof dataObj, elem.nodeType ? "object" : "function", "Calling data with no args gives us a data object reference" );
strictEqual( jQuery.data(elem), dataObj, "Calling jQuery.data returns the same data object when called multiple times" );
strictEqual( jQuery.hasData(elem), false, "jQuery.hasData agrees no data exists even when an empty data obj exists" );
@@ -187,8 +187,12 @@ test(".data()", function() {
equals( nodiv.data(), null, "data() on empty set returns null" );
var obj = { foo: "bar" };
- deepEqual( jQuery(obj).data(), {}, "Retrieve data object from a wrapped JS object (#7524)" );
-})
+ jQuery(obj).data("foo", "baz");
+
+ var dataObj = jQuery.extend(true, {}, jQuery(obj).data());
+
+ deepEqual( dataObj, { foo: "baz" }, "Retrieve data object from a wrapped JS object (#7524)" );
+});
test(".data(String) and .data(String, Object)", function() {
expect(29);
@@ -461,4 +465,15 @@ test(".removeData()", function() {
div.removeData("test.foo");
equals( div.data("test.foo"), undefined, "Make sure data is intact" );
-}); \ No newline at end of file
+});
+
+if (window.JSON && window.JSON.stringify) {
+ test("JSON serialization (#8108)", function () {
+ expect(1);
+
+ var obj = { foo: "bar" };
+ jQuery.data(obj, "hidden", true);
+
+ equals( JSON.stringify(obj), '{"foo":"bar"}', "Expando is hidden from JSON.stringify" );
+ });
+} \ No newline at end of file
diff --git a/test/unit/event.js b/test/unit/event.js
index e4caee82a..045ea73b1 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -312,7 +312,7 @@ test("bind/delegate bubbling, isDefaultPrevented", function() {
// Use a native click so we don't get jQuery simulated bubbling
if ( document.createEvent ) {
var e = document.createEvent( 'MouseEvents' );
- e.initEvent( "click", true, true );
+ e.initEvent( "click", true, true );
$jq[0].dispatchEvent(e);
}
else if ( $jq[0].click ) {
@@ -548,7 +548,7 @@ test("bind(name, false), unbind(name, false)", function() {
});
test("bind()/trigger()/unbind() on plain object", function() {
- expect( 8 );
+ expect( 7 );
var obj = {};
@@ -570,7 +570,6 @@ test("bind()/trigger()/unbind() on plain object", function() {
var events = jQuery._data(obj, "events");
ok( events, "Object has events bound." );
equals( obj.events, undefined, "Events object on plain objects is not events" );
- equals( typeof events, "function", "'events' expando is a function on plain objects." );
equals( obj.test, undefined, "Make sure that test event is not on the plain object." );
equals( obj.handle, undefined, "Make sure that the event handler is not on the plain object." );