jquery data: closes #5224. Exposing the expando.
[jquery.git] / test / unit / data.js
index fa56891..46e46ed 100644 (file)
@@ -1,5 +1,21 @@
 module("data");\r
 \r
+test("expando", function(){\r
+       expect(4);\r
+       \r
+       equals("expando" in jQuery, true, "jQuery is exposing the expando");\r
+       \r
+       var obj = {};\r
+       jQuery.data(obj, "foo", "bar");\r
+\r
+       equals(jQuery.expando in obj, true, "jQuery.data added an expando to the object");      \r
+       \r
+       var id = obj[jQuery.expando];\r
+       equals( id in jQuery.cache, true, "jQuery.data added an entry to jQuery.cache");\r
+       \r
+       equals( jQuery.cache[id].foo, "bar", "jQuery.data worked correctly");\r
+});\r
+\r
 test("jQuery.data", function() {\r
        expect(5);\r
        var div = jQuery("#foo")[0];\r
@@ -15,6 +31,14 @@ test("jQuery.data", function() {
 });\r
 \r
 test(".data()", function() {\r
+       expect(1);\r
+\r
+       var div = jQuery("#foo");\r
+       div.data("test", "success");\r
+       isObj( div.data(), {test: "success"}, "data() get the entire data object" )\r
+})\r
+\r
+test(".data(String) and .data(String, Object)", function() {\r
        expect(22);\r
        var div = jQuery("#foo");\r
        equals( div.data("test"), undefined, "Check for no data exists" );\r
@@ -105,20 +129,23 @@ test(".removeData()", function() {
 });\r
 \r
 test("queue() defaults to 'fx' type", function () {\r
-       expect(2);\r
+       expect(1);\r
        stop();\r
 \r
+       var counter = 0;\r
+\r
        var $foo = jQuery("#foo");\r
-       $foo.queue("fx", [ "sample", "array" ]);\r
-       var arr = $foo.queue();\r
-       isSet(arr, [ "sample", "array" ], "queue() got an array set with type 'fx'");\r
-       $foo.queue([ "another", "one" ]);\r
-       var arr = $foo.queue("fx");\r
-       isSet(arr, [ "another", "one" ], "queue('fx') got an array set with no type");\r
-       // clean up after test\r
-       $foo.queue([]);\r
-\r
-       start();\r
+\r
+       $foo.queue(function() {\r
+               var self = this;\r
+               setTimeout(function() {\r
+                       jQuery(self).dequeue("fx");\r
+                       start();\r
+               }, 200);\r
+       }).queue(function() {\r
+               ok( "dequeuing 'fx' calls queues created with no name" )\r
+       });\r
+\r
 });\r
 \r
 test("queue() with other types",function() {\r
@@ -154,7 +181,101 @@ test("queue() with other types",function() {
        \r
        equals( counter, 4, "Testing previous call to dequeue" );\r
        equals( $div.queue('foo').length, 0, "Testing queue length" );\r
+});\r
+\r
+test("queue(name) passes in the next item in the queue as a parameter", function() {\r
+       expect(2);\r
        \r
-       // Clean up\r
-       $div.removeData();\r
-})\r
+       var div = jQuery({});\r
+       var counter = 0;\r
+       \r
+       div.queue("foo", function(next) {\r
+               equals(++counter, 1, "Dequeueing");\r
+               next();\r
+       }).queue("foo", function(next) {\r
+               equals(++counter, 2, "Next was called");\r
+               next();\r
+       }).queue("bar", function() {\r
+               equals(++counter, 3, "Other queues are not triggered by next()")\r
+       });\r
+       \r
+       div.dequeue("foo");\r
+});\r
+\r
+test("queue(name) passes in the next item in the queue as a parameter", function() {\r
+       expect(2);\r
+       \r
+       var div = jQuery({});\r
+       var counter = 0;\r
+       \r
+       div.queue("foo", function(next) {\r
+               equals(++counter, 1, "Dequeueing");\r
+               next();\r
+       }).queue("foo", function(next) {\r
+               equals(++counter, 2, "Next was called");\r
+               next();\r
+       }).queue("bar", function() {\r
+               equals(++counter, 3, "Other queues are not triggered by next()")\r
+       });\r
+       \r
+       div.dequeue("foo");\r
+});\r
+\r
+test("queue() passes in the next item in the queue as a parameter to fx queues", function() {\r
+       expect(2);\r
+       stop();\r
+       \r
+       var div = jQuery({});\r
+       var counter = 0;\r
+       \r
+       div.queue(function(next) {\r
+               equals(++counter, 1, "Dequeueing");\r
+               var self = this;\r
+               setTimeout(function() { next() }, 500);\r
+       }).queue(function(next) {\r
+               equals(++counter, 2, "Next was called");\r
+               next();\r
+               start();\r
+       }).queue("bar", function() {\r
+               equals(++counter, 3, "Other queues are not triggered by next()")\r
+       });\r
+\r
+});\r
+\r
+test("clearQueue(name) clears the queue", function() {\r
+       expect(1);\r
+       \r
+       var div = jQuery({});\r
+       var counter = 0;\r
+       \r
+       div.queue("foo", function(next) {\r
+               counter++;\r
+               jQuery(this).clearQueue("foo");\r
+               next();\r
+       }).queue("foo", function(next) {\r
+               counter++;\r
+       });\r
+       \r
+       div.dequeue("foo");\r
+       \r
+       equals(counter, 1, "the queue was cleared");\r
+});\r
+\r
+test("clearQueue() clears the fx queue", function() {\r
+       expect(1);\r
+       \r
+       var div = jQuery({});\r
+       var counter = 0;\r
+       \r
+       div.queue(function(next) {\r
+               counter++;\r
+               var self = this;\r
+               setTimeout(function() { jQuery(self).clearQueue(); next(); }, 50);\r
+       }).queue(function(next) {\r
+               counter++;\r
+       });\r
+       \r
+       equals(counter, 1, "the queue was cleared");\r
+       \r
+       div.removeData();\r
+});\r