@@ -22,7 +22,7 @@ describe('dndDragging', function() {
22
22
} ) ;
23
23
} ) ;
24
24
25
- describe ( 'dragstart' , function ( ) {
25
+ describe ( 'dragstart handler ' , function ( ) {
26
26
var element , event ;
27
27
28
28
beforeEach ( function ( ) {
@@ -79,4 +79,66 @@ describe('dndDragging', function() {
79
79
expect ( dndDragTypeWorkaround . dragType ) . toEqual ( 4 ) ;
80
80
} ) ) ;
81
81
} ) ;
82
+
83
+ describe ( 'dragend handler' , function ( ) {
84
+ var element , event ;
85
+
86
+ beforeEach ( function ( ) {
87
+ element = compileAndLink ( SIMPLE_HTML ) ;
88
+ event = createEvent ( 'dragend' ) ;
89
+ } ) ;
90
+
91
+ it ( 'stops propagation' , function ( ) {
92
+ event . _triggerOn ( element ) ;
93
+ expect ( event . _propagationStopped ) . toBe ( true ) ;
94
+ } ) ;
95
+
96
+ it ( 'removes CSS classes from element' , inject ( function ( $timeout ) {
97
+ element . addClass ( 'dndDragging' ) ;
98
+ element . addClass ( 'dndDraggingSource' ) ;
99
+ event . _triggerOn ( element ) ;
100
+
101
+ expect ( element . hasClass ( 'dndDragging' ) ) . toBe ( false ) ;
102
+ expect ( element . hasClass ( 'dndDraggingSource' ) ) . toBe ( true ) ;
103
+
104
+ $timeout . flush ( 0 ) ;
105
+ expect ( element . hasClass ( 'dndDraggingSource' ) ) . toBe ( false ) ;
106
+ } ) ) ;
107
+
108
+ it ( 'resets workarounds' , inject ( function ( dndDragTypeWorkaround ) {
109
+ event . _triggerOn ( element ) ;
110
+ expect ( dndDragTypeWorkaround . isDragging ) . toBe ( false ) ;
111
+ } ) ) ;
112
+
113
+ var dropEffects = { move : 'moved' , copy : 'copied' , none : 'canceled' } ;
114
+ angular . forEach ( dropEffects , function ( callback , dropEffect ) {
115
+ it ( 'calls callbacks for dropEffect ' + dropEffect , inject ( function ( dndDropEffectWorkaround ) {
116
+ var html = '<div dnd-draggable dnd-dragend="de = dropEffect" '
117
+ + 'dnd-' + callback + '="ev = event"></div>' ;
118
+ element = compileAndLink ( html ) ;
119
+ dndDropEffectWorkaround . dropEffect = dropEffect ;
120
+
121
+ event . _triggerOn ( element ) ;
122
+ expect ( element . scope ( ) . ev ) . toBe ( event . originalEvent ) ;
123
+ expect ( element . scope ( ) . de ) . toBe ( dropEffect ) ;
124
+ } ) ) ;
125
+ } ) ;
126
+ } ) ;
127
+
128
+ describe ( 'click handler' , function ( ) {
129
+ it ( 'does nothing if dnd-selected is not set' , function ( ) {
130
+ var element = compileAndLink ( SIMPLE_HTML ) ;
131
+ var event = createEvent ( 'click' ) ;
132
+ event . _triggerOn ( element ) ;
133
+ expect ( event . _propagationStopped ) . toBeFalsy ( ) ;
134
+ } ) ;
135
+
136
+ it ( 'invokes dnd-selected callback and stops propagation' , function ( ) {
137
+ var element = compileAndLink ( '<div dnd-draggable dnd-selected="selected = true"></div>' ) ;
138
+ var event = createEvent ( 'click' ) ;
139
+ event . _triggerOn ( element ) ;
140
+ expect ( event . _propagationStopped ) . toBe ( true ) ;
141
+ expect ( element . scope ( ) . selected ) . toBe ( true ) ;
142
+ } ) ;
143
+ } ) ;
82
144
} ) ;
0 commit comments