@@ -11,10 +11,11 @@ describe('draggable directive', () => {
11
11
@Component ( {
12
12
template : `
13
13
<div
14
- mwlDraggable
14
+ mwlDraggable
15
+ [dragAxis]="dragAxis"
15
16
(dragStart)="dragStart($event)"
16
17
(dragging)="dragging($event)"
17
- (dragEnd)="dragEnd($event)" >
18
+ (dragEnd)="dragEnd($event)">
18
19
Drag me!
19
20
</div>` ,
20
21
} )
@@ -24,6 +25,7 @@ describe('draggable directive', () => {
24
25
public dragStart : sinon . SinonSpy = sinon . spy ( ) ;
25
26
public dragging : sinon . SinonSpy = sinon . spy ( ) ;
26
27
public dragEnd : sinon . SinonSpy = sinon . spy ( ) ;
28
+ public dragAxis : any = { x : true , y : true } ;
27
29
28
30
}
29
31
@@ -80,4 +82,40 @@ describe('draggable directive', () => {
80
82
expect ( complete ) . to . have . been . calledOnce ;
81
83
} ) ;
82
84
85
+ it ( 'should disable dragging along the x axis' , ( ) => {
86
+ fixture . componentInstance . dragAxis = { x : false , y : true } ;
87
+ fixture . detectChanges ( ) ;
88
+ const draggableElement : HTMLElement = fixture . componentInstance . draggable . element . nativeElement ;
89
+ triggerDomEvent ( 'mousedown' , draggableElement , { clientX : 5 , clientY : 10 } ) ;
90
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 7 , clientY : 12 } ) ;
91
+ expect ( fixture . componentInstance . dragging ) . to . have . been . calledWith ( { x : 0 , y : 2 } ) ;
92
+ expect ( draggableElement . style . transform ) . to . equal ( 'translate(0px, 2px)' ) ;
93
+ triggerDomEvent ( 'mouseup' , draggableElement , { clientX : 7 , clientY : 12 } ) ;
94
+ expect ( fixture . componentInstance . dragEnd ) . to . have . been . calledWith ( { x : 0 , y : 2 } ) ;
95
+ } ) ;
96
+
97
+ it ( 'should disable dragging along the y axis' , ( ) => {
98
+ fixture . componentInstance . dragAxis = { x : true , y : false } ;
99
+ fixture . detectChanges ( ) ;
100
+ const draggableElement : HTMLElement = fixture . componentInstance . draggable . element . nativeElement ;
101
+ triggerDomEvent ( 'mousedown' , draggableElement , { clientX : 5 , clientY : 10 } ) ;
102
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 7 , clientY : 12 } ) ;
103
+ expect ( fixture . componentInstance . dragging ) . to . have . been . calledWith ( { x : 2 , y : 0 } ) ;
104
+ expect ( draggableElement . style . transform ) . to . equal ( 'translate(2px, 0px)' ) ;
105
+ triggerDomEvent ( 'mouseup' , draggableElement , { clientX : 7 , clientY : 12 } ) ;
106
+ expect ( fixture . componentInstance . dragEnd ) . to . have . been . calledWith ( { x : 2 , y : 0 } ) ;
107
+ } ) ;
108
+
109
+ it ( 'should disable dragging' , ( ) => {
110
+ fixture . componentInstance . dragAxis = { x : false , y : false } ;
111
+ fixture . detectChanges ( ) ;
112
+ const draggableElement : HTMLElement = fixture . componentInstance . draggable . element . nativeElement ;
113
+ triggerDomEvent ( 'mousedown' , draggableElement , { clientX : 5 , clientY : 10 } ) ;
114
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 7 , clientY : 12 } ) ;
115
+ expect ( fixture . componentInstance . dragging ) . to . have . been . calledWith ( { x : 0 , y : 0 } ) ;
116
+ expect ( draggableElement . style . transform ) . to . equal ( 'translate(0px, 0px)' ) ;
117
+ triggerDomEvent ( 'mouseup' , draggableElement , { clientX : 7 , clientY : 12 } ) ;
118
+ expect ( fixture . componentInstance . dragEnd ) . to . have . been . calledWith ( { x : 0 , y : 0 } ) ;
119
+ } ) ;
120
+
83
121
} ) ;
0 commit comments