3 module("Event Handlers");
5 // a simple re-usable test harness object
7 init: function( opts ){
8 obj.$div = $('<div />')
16 .appendTo( document.body )
17 .bind("draginit dragstart drag dragend click", opts || {}, function( event ){
18 obj[ event.type ] += 1;
19 if ( obj.extra[ event.type ] )
20 obj.extra[ event.type ].apply( this, arguments );
21 return obj.returned[ event.type ];
24 $.extend( obj, { draginit:0, dragstart:0, drag:0, dragend:0, click:0 });
30 pageX: Math.round( Math.random() * 90 ) + 5,
31 pageY: Math.round( Math.random() * 90 ) + 5
34 pageX: Math.round( Math.random() * 90 ) + start.pageX,
35 pageY: Math.round( Math.random() * 90 ) + start.pageY
37 // simulate a complete mouse drag
39 .fire("mousedown", start )
40 .fire("mousemove", end )
41 .fire("mouseup", end )
50 // test DRAGINIT FALSE
51 asyncTest('"draginit" return false',function(){
55 obj.returned['draginit'] = false;
56 // simulate a mouse drag
59 equals( obj.draginit, 1, "draginit fired");
60 equals( obj.dragstart, 0, "dragstart did not fire");
61 equals( obj.drag, 0, "drag did not fire");
62 equals( obj.dragend, 0, "dragend did not fire");
63 equals( obj.click, 1, "click fired");
68 asyncTest('"dragstart" return false',function(){
72 obj.returned['dragstart'] = false;
73 // simulate a mouse drag
76 equals( obj.draginit, 1, "draginit fired");
77 equals( obj.dragstart, 1, "dragstart fired");
78 equals( obj.drag, 0, "drag did not fire");
79 equals( obj.dragend, 0, "dragend did not fire");
80 equals( obj.click, 1, "click fired");
85 asyncTest('"drag" return false',function(){
89 obj.returned['drag'] = false;
90 // simulate a mouse drag
93 equals( obj.draginit, 1, "draginit fired");
94 equals( obj.dragstart, 1, "dragstart fired");
95 equals( obj.drag, 1, "drag fired");
96 equals( obj.dragend, 1, "dragend fired");
97 equals( obj.click, 0, "click did not fire");
102 asyncTest('"draginit" return new element',function(){
106 var $clone = obj.returned['draginit'] = obj.$div.clone( true );
107 obj.extra['dragstart'] = obj.extra['drag'] = obj.extra['dragend'] = function( ev, dd ){
108 ok( dd.drag === $clone[0], ev.type +' target element' );
110 // simulate a mouse drag
113 equals( obj.draginit, 1, "draginit fired");
114 equals( obj.dragstart, 1, "dragstart fired");
115 equals( obj.drag, 1, "drag fired");
116 equals( obj.dragend, 1, "dragend fired");
117 equals( obj.click, 0, "click did not fire");
122 asyncTest('"draginit" return multiple elements',function(){
126 obj.returned['draginit'] = obj.$div.clone( true ).add( obj.$div );
127 // simulate a mouse drag
130 equals( obj.draginit, 1, "draginit fired once");
131 equals( obj.dragstart, 2, "dragstart fired twice");
132 equals( obj.drag, 2, "drag fired twice");
133 equals( obj.dragend, 2, "dragend fired twice");
134 equals( obj.click, 0, "click did not fire");
140 asyncTest('"dragstart" return proxy element',function(){
144 var $proxy = obj.returned['dragstart'] = obj.$div.clone().addClass('proxy');
145 obj.extra['drag'] = obj.extra['dragend'] = function( ev, dd ){
146 ok( dd.proxy === $proxy[0], ev.type +' proxy element' );
148 // simulate a mouse drag
151 equals( obj.draginit, 1, "draginit");
152 equals( obj.dragstart, 1, "dragstart");
153 equals( obj.drag, 1, "drag");
154 equals( obj.dragend, 1, "dragend");
155 equals( obj.click, 0, "click did not fire");