@@ -5,86 +5,162 @@ describe('rzslider - ', function() {
5
5
$rootScope ,
6
6
scope ,
7
7
$compile ,
8
+ $timeout ,
8
9
element ,
9
- service ;
10
+ slider ;
10
11
beforeEach ( module ( 'rzModule' ) ) ;
11
12
beforeEach ( module ( 'appTemplates' ) ) ;
12
13
13
- beforeEach ( inject ( function ( _RzSlider_ , _$rootScope_ , _$compile_ ) {
14
+ beforeEach ( inject ( function ( _RzSlider_ , _$rootScope_ , _$compile_ , _$timeout_ ) {
14
15
RzSlider = _RzSlider_ ;
15
16
$rootScope = _$rootScope_ ;
16
17
$compile = _$compile_ ;
18
+ $timeout = _$timeout_ ;
17
19
} ) ) ;
18
20
19
- describe ( 'initialisation' , function ( ) {
21
+ describe ( 'single slider initialisation' , function ( ) {
20
22
beforeEach ( function ( ) {
21
- var slider = {
23
+ var sliderConf = {
22
24
value : 10 ,
23
25
options : {
24
26
floor : 0 ,
25
- ceil : 1000 ,
26
- step : 100
27
+ ceil : 100 ,
28
+ step : 10
27
29
}
28
30
} ;
29
- createSlider ( slider ) ;
31
+ createSlider ( sliderConf ) ;
30
32
} ) ;
33
+
31
34
it ( 'should exist compiled' , function ( ) {
32
35
expect ( element . find ( 'span' ) ) . to . have . length ( 11 ) ;
33
36
} ) ;
37
+
38
+ it ( 'should round the model value to the step' , function ( ) {
39
+ scope . slider . value = 54 ;
40
+ scope . $digest ( ) ;
41
+ expect ( scope . slider . value ) . to . equal ( 50 ) ;
42
+
43
+ scope . slider . value = 55 ;
44
+ scope . $digest ( ) ;
45
+ $timeout . flush ( ) ; //to flush the throttle function
46
+ expect ( scope . slider . value ) . to . equal ( 60 ) ;
47
+ } ) ;
34
48
} ) ;
35
49
36
50
describe ( 'keyboard controls' , function ( ) {
37
- beforeEach ( function ( ) {
38
- var slider = {
51
+
52
+ describe ( 'simple cases' , function ( ) {
53
+ beforeEach ( function ( ) {
54
+ var sliderConf = {
55
+ value : 100 ,
56
+ options : {
57
+ floor : 0 ,
58
+ ceil : 200
59
+ }
60
+ } ;
61
+ createSlider ( sliderConf ) ;
62
+ } ) ;
63
+
64
+ it ( 'should increment by 1 when RIGHT is pressed' , function ( ) {
65
+ slider . minH . triggerHandler ( 'focus' ) ;
66
+ pressKeydown ( slider . minH , 'RIGHT' ) ;
67
+ expect ( scope . slider . value ) . to . equal ( 101 ) ;
68
+ } ) ;
69
+
70
+ it ( 'should decrement by 1 when LEFT is pressed' , function ( ) {
71
+ slider . minH . triggerHandler ( 'focus' ) ;
72
+ pressKeydown ( slider . minH , 'LEFT' ) ;
73
+ expect ( scope . slider . value ) . to . equal ( 99 ) ;
74
+ } ) ;
75
+
76
+ it ( 'should increment by 10% when PAGEUP is pressed' , function ( ) {
77
+ slider . minH . triggerHandler ( 'focus' ) ;
78
+ pressKeydown ( slider . minH , 'PAGEUP' ) ;
79
+ expect ( scope . slider . value ) . to . equal ( 120 ) ;
80
+ } ) ;
81
+
82
+ it ( 'should decrement by 10% when PAGEDOWN is pressed' , function ( ) {
83
+ slider . minH . triggerHandler ( 'focus' ) ;
84
+ pressKeydown ( slider . minH , 'PAGEDOWN' ) ;
85
+ expect ( scope . slider . value ) . to . equal ( 80 ) ;
86
+ } ) ;
87
+
88
+ it ( 'should set value to min when HOME is pressed' , function ( ) {
89
+ slider . minH . triggerHandler ( 'focus' ) ;
90
+ pressKeydown ( slider . minH , 'HOME' ) ;
91
+ expect ( scope . slider . value ) . to . equal ( 0 ) ;
92
+ } ) ;
93
+
94
+ it ( 'set value to max when END is pressed' , function ( ) {
95
+ slider . minH . triggerHandler ( 'focus' ) ;
96
+ pressKeydown ( slider . minH , 'END' ) ;
97
+ expect ( scope . slider . value ) . to . equal ( 200 ) ;
98
+ } ) ;
99
+ } ) ;
100
+
101
+ it ( 'should not go below 0' , function ( ) {
102
+ var sliderConf = {
39
103
value : 10 ,
40
104
options : {
41
105
floor : 0 ,
42
106
ceil : 1000 ,
43
- step : 100
107
+ step : 10
44
108
}
45
109
} ;
46
- createSlider ( slider ) ;
47
- } ) ;
48
-
49
- it ( 'should trigger a left arrow respecting step values and not go below 0' , function ( ) {
50
- var event = pressLeftArrow ( ) ;
51
- service . onPointerFocus ( element , 'rzSliderModel' , event ) ;
52
- service . onKeyboardEvent ( event ) ;
110
+ createSlider ( sliderConf ) ;
111
+ slider . minH . triggerHandler ( 'focus' ) ;
112
+ pressKeydown ( slider . minH , 'PAGEDOWN' ) ;
53
113
expect ( scope . slider . value ) . to . equal ( 0 ) ;
54
114
} ) ;
55
115
56
- function pressLeftArrow ( ) {
57
- var evt = document . createEvent ( 'CustomEvent' ) ; // MUST be 'CustomEvent'
58
- evt . initCustomEvent ( 'keydown' , false , false , null ) ;
59
- evt . which = 37 ;
60
- return evt ;
116
+ function pressKeydown ( element , key , oldAPI ) {
117
+ key = key . toUpperCase ( ) ;
118
+ var event = {
119
+ type : 'keydown'
120
+ } ;
121
+ var keys = {
122
+ 'UP' : 38 ,
123
+ 'DOWN' : 40 ,
124
+ 'LEFT' : 37 ,
125
+ 'RIGHT' : 39 ,
126
+ 'PAGEUP' : 33 ,
127
+ 'PAGEDOWN' : 34 ,
128
+ 'HOME' : 36 ,
129
+ 'END' : 35
130
+ } ;
131
+ var keyCode = keys [ key ] ;
132
+ if ( oldAPI )
133
+ eent . which = keyCode ;
134
+ else event . keyCode = keyCode ;
135
+ element . triggerHandler ( event ) ;
61
136
}
62
137
} ) ;
63
138
64
139
function createSlider ( sliderObj ) {
65
- scope = $rootScope . $new ( ) ;
66
- scope . slider = sliderObj ;
67
140
var template = '' ;
68
141
if ( sliderObj . options )
69
142
template = '<rzslider rz-slider-model="slider.value" rz-slider-options="slider.options"></rzslider>' ;
70
143
else
71
144
template = '<rzslider rz-slider-model="slider.value"></rzslider>' ;
72
- element = $compile ( template ) ( scope ) ;
73
- scope . $apply ( ) ;
74
- service = element . isolateScope ( ) . service ;
145
+ initSlider ( sliderObj , template ) ;
75
146
}
76
147
77
148
function createRangeSlider ( sliderObj ) {
78
- scope = $rootScope . $new ( ) ;
79
- scope . slider = sliderObj ;
80
149
var template = '' ;
81
150
if ( sliderObj . options )
82
151
template = '<rzslider rz-slider-model="slider.min" rz-slider-high="slider.max"' +
83
152
'rz-slider-options="slider.options"></rzslider>' ;
84
153
else
85
154
template = '<rzslider rz-slider-model="slider.value" rz-slider-high="slider.max"></rzslider>' ;
155
+ initSlider ( sliderObj , template ) ;
156
+ }
157
+
158
+ function initSlider ( sliderObj , template ) {
159
+ scope = $rootScope . $new ( ) ;
160
+ scope . slider = sliderObj ;
86
161
element = $compile ( template ) ( scope ) ;
87
162
scope . $apply ( ) ;
88
- service = element . isolateScope ( ) . service ;
163
+ slider = element . isolateScope ( ) . slider ;
164
+ $timeout . flush ( ) ;
89
165
}
90
166
} ) ;
0 commit comments