@@ -64,6 +64,12 @@ describe('timepicker directive', function () {
6464 e . wheelDelta = delta ;
6565 return e ;
6666 }
67+
68+ function wheelThatOtherMouse ( delta ) {
69+ var e = $ . Event ( 'wheel' ) ;
70+ e . deltaY = delta ;
71+ return e ;
72+ }
6773
6874 it ( 'contains three row & three input elements' , function ( ) {
6975 expect ( element . find ( 'tr' ) . length ) . toBe ( 3 ) ;
@@ -304,6 +310,58 @@ describe('timepicker directive', function () {
304310 expect ( getModelState ( ) ) . toEqual ( [ 14 , 40 ] ) ;
305311 } ) ;
306312
313+ it ( 'responds properly on "wheel" events' , function ( ) {
314+ var inputs = element . find ( 'input' ) ;
315+ var hoursEl = inputs . eq ( 0 ) , minutesEl = inputs . eq ( 1 ) ;
316+ var upMouseWheelEvent = wheelThatOtherMouse ( - 1 ) ;
317+ var downMouseWheelEvent = wheelThatOtherMouse ( 1 ) ;
318+
319+ expect ( getTimeState ( ) ) . toEqual ( [ '02' , '40' , 'PM' ] ) ;
320+ expect ( getModelState ( ) ) . toEqual ( [ 14 , 40 ] ) ;
321+
322+ // UP
323+ hoursEl . trigger ( upMouseWheelEvent ) ;
324+ $rootScope . $digest ( ) ;
325+ expect ( getTimeState ( ) ) . toEqual ( [ '03' , '40' , 'PM' ] ) ;
326+ expect ( getModelState ( ) ) . toEqual ( [ 15 , 40 ] ) ;
327+
328+ hoursEl . trigger ( upMouseWheelEvent ) ;
329+ $rootScope . $digest ( ) ;
330+ expect ( getTimeState ( ) ) . toEqual ( [ '04' , '40' , 'PM' ] ) ;
331+ expect ( getModelState ( ) ) . toEqual ( [ 16 , 40 ] ) ;
332+
333+ minutesEl . trigger ( upMouseWheelEvent ) ;
334+ $rootScope . $digest ( ) ;
335+ expect ( getTimeState ( ) ) . toEqual ( [ '04' , '41' , 'PM' ] ) ;
336+ expect ( getModelState ( ) ) . toEqual ( [ 16 , 41 ] ) ;
337+
338+ minutesEl . trigger ( upMouseWheelEvent ) ;
339+ $rootScope . $digest ( ) ;
340+ expect ( getTimeState ( ) ) . toEqual ( [ '04' , '42' , 'PM' ] ) ;
341+ expect ( getModelState ( ) ) . toEqual ( [ 16 , 42 ] ) ;
342+
343+ // DOWN
344+ minutesEl . trigger ( downMouseWheelEvent ) ;
345+ $rootScope . $digest ( ) ;
346+ expect ( getTimeState ( ) ) . toEqual ( [ '04' , '41' , 'PM' ] ) ;
347+ expect ( getModelState ( ) ) . toEqual ( [ 16 , 41 ] ) ;
348+
349+ minutesEl . trigger ( downMouseWheelEvent ) ;
350+ $rootScope . $digest ( ) ;
351+ expect ( getTimeState ( ) ) . toEqual ( [ '04' , '40' , 'PM' ] ) ;
352+ expect ( getModelState ( ) ) . toEqual ( [ 16 , 40 ] ) ;
353+
354+ hoursEl . trigger ( downMouseWheelEvent ) ;
355+ $rootScope . $digest ( ) ;
356+ expect ( getTimeState ( ) ) . toEqual ( [ '03' , '40' , 'PM' ] ) ;
357+ expect ( getModelState ( ) ) . toEqual ( [ 15 , 40 ] ) ;
358+
359+ hoursEl . trigger ( downMouseWheelEvent ) ;
360+ $rootScope . $digest ( ) ;
361+ expect ( getTimeState ( ) ) . toEqual ( [ '02' , '40' , 'PM' ] ) ;
362+ expect ( getModelState ( ) ) . toEqual ( [ 14 , 40 ] ) ;
363+ } ) ;
364+
307365 describe ( 'attributes' , function ( ) {
308366 beforeEach ( function ( ) {
309367 $rootScope . hstep = 2 ;
@@ -413,6 +471,38 @@ describe('timepicker directive', function () {
413471 expect ( getTimeState ( ) ) . toEqual ( [ '02' , '00' , 'PM' ] ) ;
414472 expect ( getModelState ( ) ) . toEqual ( [ 14 , 0 ] ) ;
415473 } ) ;
474+
475+ it ( 'responds properly on "wheel" events with configurable steps' , function ( ) {
476+ var inputs = element . find ( 'input' ) ;
477+ var hoursEl = inputs . eq ( 0 ) , minutesEl = inputs . eq ( 1 ) ;
478+ var upMouseWheelEvent = wheelThatOtherMouse ( - 1 ) ;
479+ var downMouseWheelEvent = wheelThatOtherMouse ( 1 ) ;
480+
481+ expect ( getTimeState ( ) ) . toEqual ( [ '02' , '00' , 'PM' ] ) ;
482+ expect ( getModelState ( ) ) . toEqual ( [ 14 , 0 ] ) ;
483+
484+ // UP
485+ hoursEl . trigger ( upMouseWheelEvent ) ;
486+ $rootScope . $digest ( ) ;
487+ expect ( getTimeState ( ) ) . toEqual ( [ '04' , '00' , 'PM' ] ) ;
488+ expect ( getModelState ( ) ) . toEqual ( [ 16 , 0 ] ) ;
489+
490+ minutesEl . trigger ( upMouseWheelEvent ) ;
491+ $rootScope . $digest ( ) ;
492+ expect ( getTimeState ( ) ) . toEqual ( [ '04' , '30' , 'PM' ] ) ;
493+ expect ( getModelState ( ) ) . toEqual ( [ 16 , 30 ] ) ;
494+
495+ // DOWN
496+ minutesEl . trigger ( downMouseWheelEvent ) ;
497+ $rootScope . $digest ( ) ;
498+ expect ( getTimeState ( ) ) . toEqual ( [ '04' , '00' , 'PM' ] ) ;
499+ expect ( getModelState ( ) ) . toEqual ( [ 16 , 0 ] ) ;
500+
501+ hoursEl . trigger ( downMouseWheelEvent ) ;
502+ $rootScope . $digest ( ) ;
503+ expect ( getTimeState ( ) ) . toEqual ( [ '02' , '00' , 'PM' ] ) ;
504+ expect ( getModelState ( ) ) . toEqual ( [ 14 , 0 ] ) ;
505+ } ) ;
416506
417507 it ( 'can handle strings as steps' , function ( ) {
418508 var upHours = getHoursButton ( true ) ;
0 commit comments