X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=test%2Funit%2Fdata.js;h=6a367f78ccd6f72f82acbf716973d60f066e4624;hb=9ebb2fc654d51244618e208705e2258fe733058f;hp=fa56891fe4d0c3e9260134e17bbd5023455a9ac4;hpb=4afa60835146e71c0e57b492a1cca278eaf1ef9c;p=jquery.git diff --git a/test/unit/data.js b/test/unit/data.js index fa56891..6a367f7 100644 --- a/test/unit/data.js +++ b/test/unit/data.js @@ -1,20 +1,59 @@ module("data"); +test("expando", function(){ + expect(7); + + equals("expando" in jQuery, true, "jQuery is exposing the expando"); + + var obj = {}; + jQuery.data(obj); + equals( jQuery.expando in obj, false, "jQuery.data did not add an expando to the object" ); + + jQuery.data(obj, true); + equals( jQuery.expando in obj, false, "jQuery.data did not add an expando to the object" ); + + jQuery.data(obj, 'test'); + equals( jQuery.expando in obj, false, "jQuery.data did not add an expando to the object" ); + + jQuery.data(obj, "foo", "bar"); + equals( jQuery.expando in obj, true, "jQuery.data added an expando to the object" ); + + var id = obj[jQuery.expando]; + equals( id in jQuery.cache, true, "jQuery.data added an entry to jQuery.cache" ); + + equals( jQuery.cache[id].foo, "bar", "jQuery.data worked correctly" ); +}); + test("jQuery.data", function() { - expect(5); + expect(6); var div = jQuery("#foo")[0]; equals( jQuery.data(div, "test"), undefined, "Check for no data exists" ); + jQuery.data(div, "test", "success"); equals( jQuery.data(div, "test"), "success", "Check for added data" ); + + var data = jQuery.data(div, true); + same( data, { "test": "success" }, "Return complete data set" ); + jQuery.data(div, "test", "overwritten"); equals( jQuery.data(div, "test"), "overwritten", "Check for overwritten data" ); + jQuery.data(div, "test", undefined); equals( jQuery.data(div, "test"), "overwritten", "Check that data wasn't removed"); + jQuery.data(div, "test", null); ok( jQuery.data(div, "test") === null, "Check for null data"); }); test(".data()", function() { + expect(1); + + var div = jQuery("#foo"); + div.data("test", "success"); + isObj( div.data(), {test: "success"}, "data() get the entire data object" ) +}) + +test(".data(String) and .data(String, Object)", function() { expect(22); var div = jQuery("#foo"); equals( div.data("test"), undefined, "Check for no data exists" ); @@ -105,20 +144,23 @@ test(".removeData()", function() { }); test("queue() defaults to 'fx' type", function () { - expect(2); + expect(1); stop(); + var counter = 0; + var $foo = jQuery("#foo"); - $foo.queue("fx", [ "sample", "array" ]); - var arr = $foo.queue(); - isSet(arr, [ "sample", "array" ], "queue() got an array set with type 'fx'"); - $foo.queue([ "another", "one" ]); - var arr = $foo.queue("fx"); - isSet(arr, [ "another", "one" ], "queue('fx') got an array set with no type"); - // clean up after test - $foo.queue([]); - - start(); + + $foo.queue(function() { + var self = this; + setTimeout(function() { + jQuery(self).dequeue("fx"); + start(); + }, 200); + }).queue(function() { + ok( "dequeuing 'fx' calls queues created with no name" ) + }); + }); test("queue() with other types",function() { @@ -154,7 +196,101 @@ test("queue() with other types",function() { equals( counter, 4, "Testing previous call to dequeue" ); equals( $div.queue('foo').length, 0, "Testing queue length" ); +}); + +test("queue(name) passes in the next item in the queue as a parameter", function() { + expect(2); - // Clean up - $div.removeData(); -}) + var div = jQuery({}); + var counter = 0; + + div.queue("foo", function(next) { + equals(++counter, 1, "Dequeueing"); + next(); + }).queue("foo", function(next) { + equals(++counter, 2, "Next was called"); + next(); + }).queue("bar", function() { + equals(++counter, 3, "Other queues are not triggered by next()") + }); + + div.dequeue("foo"); +}); + +test("queue(name) passes in the next item in the queue as a parameter", function() { + expect(2); + + var div = jQuery({}); + var counter = 0; + + div.queue("foo", function(next) { + equals(++counter, 1, "Dequeueing"); + next(); + }).queue("foo", function(next) { + equals(++counter, 2, "Next was called"); + next(); + }).queue("bar", function() { + equals(++counter, 3, "Other queues are not triggered by next()") + }); + + div.dequeue("foo"); +}); + +test("queue() passes in the next item in the queue as a parameter to fx queues", function() { + expect(2); + stop(); + + var div = jQuery({}); + var counter = 0; + + div.queue(function(next) { + equals(++counter, 1, "Dequeueing"); + var self = this; + setTimeout(function() { next() }, 500); + }).queue(function(next) { + equals(++counter, 2, "Next was called"); + next(); + start(); + }).queue("bar", function() { + equals(++counter, 3, "Other queues are not triggered by next()") + }); + +}); + +test("clearQueue(name) clears the queue", function() { + expect(1); + + var div = jQuery({}); + var counter = 0; + + div.queue("foo", function(next) { + counter++; + jQuery(this).clearQueue("foo"); + next(); + }).queue("foo", function(next) { + counter++; + }); + + div.dequeue("foo"); + + equals(counter, 1, "the queue was cleared"); +}); + +test("clearQueue() clears the fx queue", function() { + expect(1); + + var div = jQuery({}); + var counter = 0; + + div.queue(function(next) { + counter++; + var self = this; + setTimeout(function() { jQuery(self).clearQueue(); next(); }, 50); + }).queue(function(next) { + counter++; + }); + + equals(counter, 1, "the queue was cleared"); + + div.removeData(); +});