@@ -11,7 +11,8 @@ import {
11
11
CalendarMomentDateFormatter ,
12
12
CalendarDateFormatter ,
13
13
CalendarModule ,
14
- MOMENT
14
+ MOMENT ,
15
+ CalendarEventTimesChangedEvent
15
16
} from './../src' ;
16
17
import { CalendarWeekViewComponent } from './../src/components/week/calendarWeekView.component' ;
17
18
import { Subject } from 'rxjs/Rx' ;
@@ -217,4 +218,80 @@ describe('calendarWeekView component', () => {
217
218
fixture . destroy ( ) ;
218
219
} ) ;
219
220
221
+ it ( 'should resize the event by dragging from the left edge' , ( ) => {
222
+ const fixture : ComponentFixture < CalendarWeekViewComponent > = TestBed . createComponent ( CalendarWeekViewComponent ) ;
223
+ fixture . componentInstance . viewDate = new Date ( '2016-06-27' ) ;
224
+ fixture . componentInstance . events = [ {
225
+ title : 'foo' ,
226
+ color : { primary : '' , secondary : '' } ,
227
+ start : moment ( '2016-06-27' ) . add ( 4 , 'hours' ) . toDate ( ) ,
228
+ end : moment ( '2016-06-27' ) . add ( 6 , 'hours' ) . toDate ( ) ,
229
+ resizable : {
230
+ beforeStart : true
231
+ }
232
+ } ] ;
233
+ fixture . componentInstance . ngOnChanges ( { viewDate : { } , events : { } } ) ;
234
+ fixture . detectChanges ( ) ;
235
+ document . body . appendChild ( fixture . nativeElement ) ;
236
+ const event : HTMLElement = fixture . nativeElement . querySelector ( '.cal-event-container' ) ;
237
+ const dayWidth : number = event . parentElement . offsetWidth / 7 ;
238
+ const rect : ClientRect = event . getBoundingClientRect ( ) ;
239
+ let resizeEvent : CalendarEventTimesChangedEvent ;
240
+ fixture . componentInstance . eventTimesChanged . subscribe ( event => {
241
+ resizeEvent = event ;
242
+ } ) ;
243
+ triggerDomEvent ( 'mousedown' , document . body , { clientX : rect . left , clientY : rect . top } ) ;
244
+ fixture . detectChanges ( ) ;
245
+ triggerDomEvent ( 'mousemove' , document . body , { clientX : rect . left - dayWidth , clientY : rect . top } ) ;
246
+ fixture . detectChanges ( ) ;
247
+ expect ( Math . round ( event . getBoundingClientRect ( ) . left ) ) . to . equal ( Math . round ( rect . left - dayWidth ) ) ;
248
+ expect ( Math . round ( event . getBoundingClientRect ( ) . width ) ) . to . equal ( Math . round ( rect . width + dayWidth ) ) ;
249
+ triggerDomEvent ( 'mouseup' , document . body , { clientX : rect . left - dayWidth , clientY : rect . top } ) ;
250
+ fixture . detectChanges ( ) ;
251
+ fixture . destroy ( ) ;
252
+ expect ( resizeEvent ) . to . deep . equal ( {
253
+ event : fixture . componentInstance . events [ 0 ] ,
254
+ newStart : moment ( '2016-06-27' ) . add ( 4 , 'hours' ) . subtract ( 1 , 'day' ) . toDate ( ) ,
255
+ newEnd : moment ( '2016-06-27' ) . add ( 6 , 'hours' ) . toDate ( )
256
+ } ) ;
257
+ } ) ;
258
+
259
+ it ( 'should resize the event by dragging from the right edge' , ( ) => {
260
+ const fixture : ComponentFixture < CalendarWeekViewComponent > = TestBed . createComponent ( CalendarWeekViewComponent ) ;
261
+ fixture . componentInstance . viewDate = new Date ( '2016-06-27' ) ;
262
+ fixture . componentInstance . events = [ {
263
+ title : 'foo' ,
264
+ color : { primary : '' , secondary : '' } ,
265
+ start : moment ( '2016-06-27' ) . add ( 4 , 'hours' ) . toDate ( ) ,
266
+ end : moment ( '2016-06-27' ) . add ( 6 , 'hours' ) . toDate ( ) ,
267
+ resizable : {
268
+ afterEnd : true
269
+ }
270
+ } ] ;
271
+ fixture . componentInstance . ngOnChanges ( { viewDate : { } , events : { } } ) ;
272
+ fixture . detectChanges ( ) ;
273
+ document . body . appendChild ( fixture . nativeElement ) ;
274
+ const event : HTMLElement = fixture . nativeElement . querySelector ( '.cal-event-container' ) ;
275
+ const dayWidth : number = event . parentElement . offsetWidth / 7 ;
276
+ const rect : ClientRect = event . getBoundingClientRect ( ) ;
277
+ let resizeEvent : CalendarEventTimesChangedEvent ;
278
+ fixture . componentInstance . eventTimesChanged . subscribe ( event => {
279
+ resizeEvent = event ;
280
+ } ) ;
281
+ triggerDomEvent ( 'mousedown' , document . body , { clientX : rect . right , clientY : rect . top } ) ;
282
+ fixture . detectChanges ( ) ;
283
+ triggerDomEvent ( 'mousemove' , document . body , { clientX : rect . right + dayWidth , clientY : rect . top } ) ;
284
+ fixture . detectChanges ( ) ;
285
+ expect ( Math . round ( event . getBoundingClientRect ( ) . left ) ) . to . equal ( Math . round ( rect . left ) ) ;
286
+ expect ( Math . round ( event . getBoundingClientRect ( ) . width ) ) . to . equal ( Math . round ( rect . width + dayWidth ) ) ;
287
+ triggerDomEvent ( 'mouseup' , document . body , { clientX : rect . right + dayWidth , clientY : rect . top } ) ;
288
+ fixture . detectChanges ( ) ;
289
+ fixture . destroy ( ) ;
290
+ expect ( resizeEvent ) . to . deep . equal ( {
291
+ event : fixture . componentInstance . events [ 0 ] ,
292
+ newStart : moment ( '2016-06-27' ) . add ( 4 , 'hours' ) . toDate ( ) ,
293
+ newEnd : moment ( '2016-06-27' ) . add ( 6 , 'hours' ) . add ( 1 , 'day' ) . toDate ( )
294
+ } ) ;
295
+ } ) ;
296
+
220
297
} ) ;
0 commit comments