imported the whole jquery-ui package, refreshed with 1.10.2
[unfold.git] / third-party / jquery-ui-1.10.2 / tests / unit / sortable / sortable_events.js
diff --git a/third-party/jquery-ui-1.10.2/tests/unit/sortable/sortable_events.js b/third-party/jquery-ui-1.10.2/tests/unit/sortable/sortable_events.js
new file mode 100644 (file)
index 0000000..46a493b
--- /dev/null
@@ -0,0 +1,275 @@
+/*
+ * sortable_events.js
+ */
+(function($) {
+
+module("sortable: events");
+
+test("start", function() {
+       expect( 7 );
+
+       var hash;
+       $("#sortable").sortable({
+               start: function( e, ui ) {
+                       hash = ui;
+               }
+       }).find("li:eq(0)").simulate( "drag", {
+               dy: 10
+       });
+
+       ok(hash, "start event triggered");
+       ok(hash.helper, "UI hash includes: helper");
+       ok(hash.placeholder, "UI hash includes: placeholder");
+       ok(hash.item, "UI hash includes: item");
+       ok(!hash.sender, "UI hash does not include: sender");
+
+       // todo: see if these events should actually have sane values in them
+       ok("position" in hash, "UI hash includes: position");
+       ok("offset" in hash, "UI hash includes: offset");
+
+
+});
+
+test("sort", function() {
+       expect( 7 );
+
+       var hash;
+       $("#sortable").sortable({
+               sort: function( e, ui ) {
+                       hash = ui;
+               }
+       }).find("li:eq(0)").simulate( "drag", {
+               dy: 10
+       });
+
+       ok(hash, "sort event triggered");
+       ok(hash.helper, "UI hash includes: helper");
+       ok(hash.placeholder, "UI hash includes: placeholder");
+       ok(hash.position && ("top" in hash.position && "left" in hash.position), "UI hash includes: position");
+       ok(hash.offset && (hash.offset.top && hash.offset.left), "UI hash includes: offset");
+       ok(hash.item, "UI hash includes: item");
+       ok(!hash.sender, "UI hash does not include: sender");
+
+});
+
+test("change", function() {
+       expect( 8 );
+
+       var hash;
+       $("#sortable").sortable({
+               change: function( e, ui ) {
+                       hash = ui;
+               }
+       }).find("li:eq(0)").simulate( "drag", {
+               dx: 1,
+               dy: 1
+       });
+
+       ok(!hash, "1px drag, change event should not be triggered");
+
+       $("#sortable").sortable({
+               change: function( e, ui ) {
+                       hash = ui;
+               }
+       }).find("li:eq(0)").simulate( "drag", {
+               dy: 22
+       });
+
+       ok(hash, "change event triggered");
+       ok(hash.helper, "UI hash includes: helper");
+       ok(hash.placeholder, "UI hash includes: placeholder");
+       ok(hash.position && ("top" in hash.position && "left" in hash.position), "UI hash includes: position");
+       ok(hash.offset && (hash.offset.top && hash.offset.left), "UI hash includes: offset");
+       ok(hash.item, "UI hash includes: item");
+       ok(!hash.sender, "UI hash does not include: sender");
+
+});
+
+test("beforeStop", function() {
+       expect( 7 );
+
+       var hash;
+       $("#sortable").sortable({
+               beforeStop: function( e, ui ) {
+                       hash = ui;
+               }
+       }).find("li:eq(0)").simulate( "drag", {
+               dy: 20
+       });
+
+       ok(hash, "beforeStop event triggered");
+       ok(hash.helper, "UI hash includes: helper");
+       ok(hash.placeholder, "UI hash includes: placeholder");
+       ok(hash.position && ("top" in hash.position && "left" in hash.position), "UI hash includes: position");
+       ok(hash.offset && (hash.offset.top && hash.offset.left), "UI hash includes: offset");
+       ok(hash.item, "UI hash includes: item");
+       ok(!hash.sender, "UI hash does not include: sender");
+
+});
+
+test("stop", function() {
+       expect( 7 );
+
+       var hash;
+       $("#sortable").sortable({
+               stop: function( e, ui ) {
+                       hash = ui;
+               }
+       }).find("li:eq(0)").simulate( "drag", {
+               dy: 20
+       });
+
+       ok(hash, "stop event triggered");
+       ok(!hash.helper, "UI should not include: helper");
+       ok(hash.placeholder, "UI hash includes: placeholder");
+       ok(hash.position && ("top" in hash.position && "left" in hash.position), "UI hash includes: position");
+       ok(hash.offset && (hash.offset.top && hash.offset.left), "UI hash includes: offset");
+       ok(hash.item, "UI hash includes: item");
+       ok(!hash.sender, "UI hash does not include: sender");
+
+});
+
+test("update", function() {
+       expect( 8 );
+
+       var hash;
+       $("#sortable").sortable({
+               update: function( e, ui ) {
+                       hash = ui;
+               }
+       }).find("li:eq(0)").simulate( "drag", {
+               dx: 1,
+               dy: 1
+       });
+
+       ok(!hash, "1px drag, update event should not be triggered");
+
+       $("#sortable").sortable({
+               update: function( e, ui ) {
+                       hash = ui;
+               }
+       }).find("li:eq(0)").simulate( "drag", {
+               dy: 22
+       });
+
+       ok(hash, "update event triggered");
+       ok(!hash.helper, "UI hash should not include: helper");
+       ok(hash.placeholder, "UI hash includes: placeholder");
+       ok(hash.position && ("top" in hash.position && "left" in hash.position), "UI hash includes: position");
+       ok(hash.offset && (hash.offset.top && hash.offset.left), "UI hash includes: offset");
+       ok(hash.item, "UI hash includes: item");
+       ok(!hash.sender, "UI hash does not include: sender");
+
+});
+
+test("#3019: Stop fires too early", function() {
+       expect(2);
+
+       var helper = null,
+               el = $("#sortable").sortable({
+                       stop: function(event, ui) {
+                               helper = ui.helper;
+                       }
+               });
+
+       TestHelpers.sortable.sort($("li", el)[0], 0, 44, 2, "Dragging the sortable");
+       equal(helper, null, "helper should be false");
+
+});
+
+test("#4752: link event firing on sortable with connect list", function () {
+       expect( 10 );
+
+       var fired = {},
+               hasFired = function (type) { return (type in fired) && (true === fired[type]); };
+
+       $("#sortable").clone().attr("id", "sortable2").insertAfter("#sortable");
+
+       $("#qunit-fixture ul").sortable({
+               connectWith: "#qunit-fixture ul",
+               change: function () {
+                       fired.change = true;
+               },
+               receive: function () {
+                       fired.receive = true;
+               },
+               remove: function () {
+                       fired.remove = true;
+               }
+       });
+
+       $("#qunit-fixture ul").bind("click.ui-sortable-test", function () {
+               fired.click = true;
+       });
+
+       $("#sortable li:eq(0)").simulate("click");
+       ok(!hasFired("change"), "Click only, change event should not have fired");
+       ok(hasFired("click"), "Click event should have fired");
+
+       // Drag an item within the first list
+       fired = {};
+       $("#sortable li:eq(0)").simulate("drag", { dx: 0, dy: 40 });
+       ok(hasFired("change"), "40px drag, change event should have fired");
+       ok(!hasFired("receive"), "Receive event should not have fired");
+       ok(!hasFired("remove"), "Remove event should not have fired");
+       ok(!hasFired("click"), "Click event should not have fired");
+
+       // Drag an item from the first list to the second, connected list
+       fired = {};
+       $("#sortable li:eq(0)").simulate("drag", { dx: 0, dy: 150 });
+       ok(hasFired("change"), "150px drag, change event should have fired");
+       ok(hasFired("receive"), "Receive event should have fired");
+       ok(hasFired("remove"), "Remove event should have fired");
+       ok(!hasFired("click"), "Click event should not have fired");
+});
+
+/*
+test("receive", function() {
+       ok(false, "missing test - untested code is broken code.");
+});
+
+test("remove", function() {
+       ok(false, "missing test - untested code is broken code.");
+});
+*/
+
+test( "over", function() {
+       expect( 8 );
+
+       var hash,
+               overCount = 0;
+
+       $( "#sortable" ).sortable({
+               over: function( e, ui ) {
+                       hash = ui;
+                       overCount++;
+               }
+       }).find( "li:eq(0)" ).simulate( "drag", {
+               dy: 20
+       });
+
+       ok( hash, "stop event triggered" );
+       ok( hash.helper, "UI should not include: helper" );
+       ok( hash.placeholder, "UI hash includes: placeholder" );
+       ok( hash.position && ( "top" in hash.position && "left" in hash.position ), "UI hash includes: position" );
+       ok( hash.offset && ( hash.offset.top && hash.offset.left ), "UI hash includes: offset" );
+       ok( hash.item, "UI hash includes: item" );
+       ok( hash.sender, "UI hash does not include: sender" );
+       equal( overCount, 1, "over fires only once" );
+});
+
+/*
+test("out", function() {
+       ok(false, "missing test - untested code is broken code.");
+});
+
+test("activate", function() {
+       ok(false, "missing test - untested code is broken code.");
+});
+
+test("deactivate", function() {
+       ok(false, "missing test - untested code is broken code.");
+});
+*/
+
+})(jQuery);