@@ -559,4 +559,40 @@ describe('CalendarDayViewComponent component', () => {
559
559
} ) ;
560
560
} ) ;
561
561
562
+ it ( 'should respect the event snap size when dragging and dropping' , ( ) => {
563
+ const fixture : ComponentFixture < CalendarDayViewComponent > = TestBed . createComponent ( CalendarDayViewComponent ) ;
564
+ fixture . componentInstance . viewDate = new Date ( '2016-06-27' ) ;
565
+ fixture . componentInstance . events = [ {
566
+ title : 'foo' ,
567
+ color : { primary : '' , secondary : '' } ,
568
+ start : moment ( '2016-06-27' ) . startOf ( 'day' ) . add ( 4 , 'hours' ) . toDate ( ) ,
569
+ end : moment ( '2016-06-27' ) . startOf ( 'day' ) . add ( 6 , 'hours' ) . toDate ( ) ,
570
+ draggable : true
571
+ } ] ;
572
+ fixture . componentInstance . eventSnapSize = 1 ;
573
+ fixture . componentInstance . ngOnChanges ( { viewDate : { } , events : { } } ) ;
574
+ fixture . detectChanges ( ) ;
575
+ document . body . appendChild ( fixture . nativeElement ) ;
576
+ const event : HTMLElement = fixture . nativeElement . querySelector ( '.cal-event' ) ;
577
+ const eventPosition : ClientRect = event . getBoundingClientRect ( ) ;
578
+ let dragEvent : CalendarEventTimesChangedEvent ;
579
+ fixture . componentInstance . eventTimesChanged . subscribe ( event => {
580
+ dragEvent = event ;
581
+ } ) ;
582
+ triggerDomEvent ( 'mousedown' , event , { clientY : eventPosition . top + 5 , clientX : eventPosition . left + 10 } ) ;
583
+ fixture . detectChanges ( ) ;
584
+ triggerDomEvent ( 'mousemove' , document . body , { clientY : eventPosition . top + 15 , clientX : eventPosition . left + 10 } ) ;
585
+ fixture . detectChanges ( ) ;
586
+ expect ( event . getBoundingClientRect ( ) . top ) . to . equal ( eventPosition . top + 10 ) ;
587
+ expect ( event . getBoundingClientRect ( ) . bottom ) . to . equal ( eventPosition . bottom + 10 ) ;
588
+ triggerDomEvent ( 'mouseup' , document . body , { clientY : eventPosition . top + 10 , clientX : eventPosition . left + 10 } ) ;
589
+ fixture . detectChanges ( ) ;
590
+ fixture . destroy ( ) ;
591
+ expect ( dragEvent ) . to . deep . equal ( {
592
+ event : fixture . componentInstance . events [ 0 ] ,
593
+ newStart : moment ( '2016-06-27' ) . add ( 4 , 'hours' ) . add ( 10 , 'minutes' ) . toDate ( ) ,
594
+ newEnd : moment ( '2016-06-27' ) . add ( 6 , 'hours' ) . add ( 10 , 'minutes' ) . toDate ( )
595
+ } ) ;
596
+ } ) ;
597
+
562
598
} ) ;
0 commit comments