@@ -28,6 +28,8 @@ define(['./TimeConductorController'], function (TimeConductorController) {
28
28
var mockConductorViewService ;
29
29
var mockTimeSystems ;
30
30
var controller ;
31
+ var mockFormatService ;
32
+ var mockFormat ;
31
33
32
34
beforeEach ( function ( ) {
33
35
mockScope = jasmine . createSpyObj ( "$scope" , [
@@ -52,34 +54,32 @@ define(['./TimeConductorController'], function (TimeConductorController) {
52
54
"availableModes" ,
53
55
"mode" ,
54
56
"availableTimeSystems" ,
55
- "deltas"
57
+ "deltas" ,
58
+ "deltas" ,
59
+ "on" ,
60
+ "off"
56
61
]
57
62
) ;
58
63
mockConductorViewService . availableModes . andReturn ( [ ] ) ;
59
64
mockConductorViewService . availableTimeSystems . andReturn ( [ ] ) ;
60
65
66
+ mockFormatService = jasmine . createSpyObj ( 'formatService' , [
67
+ 'getFormat'
68
+ ] ) ;
69
+ mockFormat = jasmine . createSpyObj ( 'format' , [
70
+ 'format'
71
+ ] ) ;
72
+ mockFormatService . getFormat . andReturn ( mockFormat ) ;
73
+
61
74
mockTimeSystems = [ ] ;
62
75
} ) ;
63
76
64
- function getListener ( name ) {
65
- return mockTimeConductor . on . calls . filter ( function ( call ) {
66
- return call . args [ 0 ] === name ;
77
+ function getListener ( target , event ) {
78
+ return target . calls . filter ( function ( call ) {
79
+ return call . args [ 0 ] === event ;
67
80
} ) [ 0 ] . args [ 1 ] ;
68
81
}
69
82
70
- describe ( "" , function ( ) {
71
- beforeEach ( function ( ) {
72
- controller = new TimeConductorController (
73
- mockScope ,
74
- mockWindow ,
75
- mockTimeConductor ,
76
- mockConductorViewService ,
77
- mockTimeSystems
78
- ) ;
79
- } ) ;
80
-
81
- } ) ;
82
-
83
83
describe ( "when time conductor state changes" , function ( ) {
84
84
var mockFormat ;
85
85
var mockDeltaFormat ;
@@ -119,25 +119,26 @@ define(['./TimeConductorController'], function (TimeConductorController) {
119
119
controller = new TimeConductorController (
120
120
mockScope ,
121
121
mockWindow ,
122
- mockTimeConductor ,
122
+ { conductor : mockTimeConductor } ,
123
123
mockConductorViewService ,
124
- mockTimeSystems
124
+ mockTimeSystems ,
125
+ mockFormatService
125
126
) ;
126
127
127
- tsListener = getListener ( "timeSystem" ) ;
128
+ tsListener = getListener ( mockTimeConductor . on , "timeSystem" ) ;
128
129
} ) ;
129
130
130
131
it ( "listens for changes to conductor state" , function ( ) {
131
132
expect ( mockTimeConductor . on ) . toHaveBeenCalledWith ( "timeSystem" , controller . changeTimeSystem ) ;
132
- expect ( mockTimeConductor . on ) . toHaveBeenCalledWith ( "bounds" , controller . setFormFromBounds ) ;
133
+ expect ( mockTimeConductor . on ) . toHaveBeenCalledWith ( "bounds" , controller . changeBounds ) ;
133
134
} ) ;
134
135
135
136
it ( "deregisters conductor listens when scope is destroyed" , function ( ) {
136
137
expect ( mockScope . $on ) . toHaveBeenCalledWith ( "$destroy" , controller . destroy ) ;
137
138
138
139
controller . destroy ( ) ;
139
140
expect ( mockTimeConductor . off ) . toHaveBeenCalledWith ( "timeSystem" , controller . changeTimeSystem ) ;
140
- expect ( mockTimeConductor . off ) . toHaveBeenCalledWith ( "bounds" , controller . setFormFromBounds ) ;
141
+ expect ( mockTimeConductor . off ) . toHaveBeenCalledWith ( "bounds" , controller . changeBounds ) ;
141
142
} ) ;
142
143
143
144
it ( "when time system changes, sets time system on scope" , function ( ) {
@@ -151,14 +152,44 @@ define(['./TimeConductorController'], function (TimeConductorController) {
151
152
} ) ;
152
153
153
154
it ( "when time system changes, sets defaults on scope" , function ( ) {
154
- expect ( tsListener ) . toBeDefined ( ) ;
155
+ mockDefaults . zoom = {
156
+ min : 100 ,
157
+ max : 10
158
+ } ;
159
+ mockTimeConductor . timeSystem . andReturn ( timeSystem ) ;
155
160
tsListener ( timeSystem ) ;
156
161
157
162
expect ( mockScope . boundsModel . start ) . toEqual ( defaultBounds . start ) ;
158
163
expect ( mockScope . boundsModel . end ) . toEqual ( defaultBounds . end ) ;
159
164
160
165
expect ( mockScope . boundsModel . startDelta ) . toEqual ( defaultDeltas . start ) ;
161
166
expect ( mockScope . boundsModel . endDelta ) . toEqual ( defaultDeltas . end ) ;
167
+
168
+ expect ( mockScope . timeSystemModel . minZoom ) . toBe ( mockDefaults . zoom . min ) ;
169
+ expect ( mockScope . timeSystemModel . maxZoom ) . toBe ( mockDefaults . zoom . max ) ;
170
+ } ) ;
171
+
172
+ it ( "when bounds change, sets the correct zoom slider value" , function ( ) {
173
+ var bounds = {
174
+ start : 0 ,
175
+ end : 50
176
+ } ;
177
+ mockDefaults . zoom = {
178
+ min : 100 ,
179
+ max : 0
180
+ } ;
181
+
182
+ function exponentializer ( rawValue ) {
183
+ return 1 - Math . pow ( rawValue , 1 / 4 ) ;
184
+ }
185
+
186
+ mockTimeConductor . timeSystem . andReturn ( timeSystem ) ;
187
+ //Set zoom defaults
188
+ tsListener ( timeSystem ) ;
189
+
190
+ controller . changeBounds ( bounds ) ;
191
+ expect ( controller . currentZoom ) . toEqual ( exponentializer ( 0.5 ) ) ;
192
+
162
193
} ) ;
163
194
164
195
it ( "when bounds change, sets them on scope" , function ( ) {
@@ -167,7 +198,7 @@ define(['./TimeConductorController'], function (TimeConductorController) {
167
198
end : 2
168
199
} ;
169
200
170
- var boundsListener = getListener ( "bounds" ) ;
201
+ var boundsListener = getListener ( mockTimeConductor . on , "bounds" ) ;
171
202
expect ( boundsListener ) . toBeDefined ( ) ;
172
203
boundsListener ( bounds ) ;
173
204
@@ -225,9 +256,10 @@ define(['./TimeConductorController'], function (TimeConductorController) {
225
256
controller = new TimeConductorController (
226
257
mockScope ,
227
258
mockWindow ,
228
- mockTimeConductor ,
259
+ { conductor : mockTimeConductor } ,
229
260
mockConductorViewService ,
230
- mockTimeSystemConstructors
261
+ mockTimeSystemConstructors ,
262
+ mockFormatService
231
263
) ;
232
264
233
265
mockConductorViewService . availableTimeSystems . andReturn ( mockTimeSystems ) ;
@@ -240,9 +272,10 @@ define(['./TimeConductorController'], function (TimeConductorController) {
240
272
controller = new TimeConductorController (
241
273
mockScope ,
242
274
mockWindow ,
243
- mockTimeConductor ,
275
+ { conductor : mockTimeConductor } ,
244
276
mockConductorViewService ,
245
- mockTimeSystemConstructors
277
+ mockTimeSystemConstructors ,
278
+ mockFormatService
246
279
) ;
247
280
248
281
mockConductorViewService . availableTimeSystems . andReturn ( mockTimeSystems ) ;
@@ -264,9 +297,10 @@ define(['./TimeConductorController'], function (TimeConductorController) {
264
297
controller = new TimeConductorController (
265
298
mockScope ,
266
299
mockWindow ,
267
- mockTimeConductor ,
300
+ { conductor : mockTimeConductor } ,
268
301
mockConductorViewService ,
269
- mockTimeSystemConstructors
302
+ mockTimeSystemConstructors ,
303
+ mockFormatService
270
304
) ;
271
305
272
306
controller . updateBoundsFromForm ( formModel ) ;
@@ -286,9 +320,10 @@ define(['./TimeConductorController'], function (TimeConductorController) {
286
320
controller = new TimeConductorController (
287
321
mockScope ,
288
322
mockWindow ,
289
- mockTimeConductor ,
323
+ { conductor : mockTimeConductor } ,
290
324
mockConductorViewService ,
291
- mockTimeSystemConstructors
325
+ mockTimeSystemConstructors ,
326
+ mockFormatService
292
327
) ;
293
328
294
329
controller . updateDeltasFromForm ( formModel ) ;
@@ -321,14 +356,35 @@ define(['./TimeConductorController'], function (TimeConductorController) {
321
356
controller = new TimeConductorController (
322
357
mockScope ,
323
358
mockWindow ,
324
- mockTimeConductor ,
359
+ { conductor : mockTimeConductor } ,
325
360
mockConductorViewService ,
326
- mockTimeSystems
361
+ mockTimeSystems ,
362
+ mockFormatService
327
363
) ;
328
364
329
365
controller . selectTimeSystemByKey ( 'testTimeSystem' ) ;
330
366
expect ( mockTimeConductor . timeSystem ) . toHaveBeenCalledWith ( timeSystem , defaultBounds ) ;
331
367
} ) ;
368
+
369
+ it ( "updates form bounds during pan events" , function ( ) {
370
+ var testBounds = {
371
+ start : 10 ,
372
+ end : 20
373
+ } ;
374
+
375
+ expect ( controller . $scope . boundsModel . start ) . not . toBe ( testBounds . start ) ;
376
+ expect ( controller . $scope . boundsModel . end ) . not . toBe ( testBounds . end ) ;
377
+
378
+ // use registered CB instead
379
+ // controller.onPan(testBounds);
380
+ expect ( controller . conductorViewService . on ) . toHaveBeenCalledWith ( "pan" ,
381
+ controller . onPan ) ;
382
+
383
+ getListener ( controller . conductorViewService . on , "pan" ) ( testBounds ) ;
384
+
385
+ expect ( controller . $scope . boundsModel . start ) . toBe ( testBounds . start ) ;
386
+ expect ( controller . $scope . boundsModel . end ) . toBe ( testBounds . end ) ;
387
+ } ) ;
332
388
} ) ;
333
389
334
390
} ) ;
0 commit comments