/* * 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() { ok(false, "missing test - untested code is broken code."); }); 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);