Просмотр исходного кода

event resizing tests, for maxDate

Adam Shaw 9 лет назад
Родитель
Сommit
24493c8257

+ 18 - 0
tests/automated-better/Geom.js

@@ -44,6 +44,24 @@ var Geom = {
 			left: left,
 			top: top
 		};
+	},
+
+	subtractPoints: function(point1, point0) {
+		return this.buildPoint(
+			point1.left - point0.left,
+			point1.top - point0.top
+		);
+	},
+
+	addPoints: function(point0, point1) {
+		return this.buildPoint(
+			point0.left + point1.left,
+			point0.top + point1.top
+		);
+	},
+
+	getRectTopLeft: function(rect) {
+		return this.buildPoint(rect.left, rect.top);
 	}
 
 };

+ 4 - 0
tests/automated-better/event-drag/EventDragUtils.js

@@ -4,6 +4,10 @@ TODO: Don't rely on legacy simulateDrag
 */
 var EventDragUtils = {
 
+	/*
+	Given the rectangles of the origin and destination
+	slot or day area.
+	*/
 	drag: function(rect0, rect1, debug) {
 		var el = EventRenderUtils.getSingleEl();
 		var elRect = el[0].getBoundingClientRect();

+ 15 - 0
tests/automated-better/event-resize/DayGridEventResizeUtils.js

@@ -0,0 +1,15 @@
+
+var DayGridEventResizeUtils = {
+
+	resize: function(startDate, endDate, debug) {
+		var el0 = DayGridRenderUtils.getSingleDayEl(startDate);
+		var el1 = DayGridRenderUtils.getSingleDayEl(endDate);
+
+		return EventResizeUtils.resize(
+			el0[0].getBoundingClientRect(),
+			el1[0].getBoundingClientRect(),
+			debug
+		);
+	}
+
+};

+ 44 - 0
tests/automated-better/event-resize/EventResizeUtils.js

@@ -0,0 +1,44 @@
+
+var EventResizeUtils = {
+
+	resize: function(rect0, rect1, debug) {
+		var eventEl = EventRenderUtils.getSingleEl();
+
+		eventEl.simulate('mouseover'); // so that resize handle is revealed
+
+		var resizerEl = eventEl.find('.fc-resizer');
+		var resizerRect = resizerEl[0].getBoundingClientRect();
+		var resizerCenter = Geom.getRectCenter(resizerRect);
+
+		var vector = Geom.subtractPoints(
+			resizerCenter,
+			Geom.getRectTopLeft(rect0)
+		);
+		var point1 = Geom.addPoints(
+			Geom.getRectTopLeft(rect1),
+			vector
+		);
+		var deferred = $.Deferred();
+
+		resizerEl.simulate('drag', {
+			point: resizerCenter,
+			end: point1,
+			debug: debug
+		});
+
+		currentCalendar.on('eventResizeStop', function() {
+			setTimeout(function() {
+				deferred.resolve({ isSuccess: false }); // won't do anything if already eventResize
+			}, 20);  // will happen after eventResize's timeout
+		});
+
+		currentCalendar.on('eventResize', function(event) { // always called after eventDragStop, if success
+			setTimeout(function() {
+				deferred.resolve({ isSuccess: true, event: event });
+			}, 10); // will happen first
+		});
+
+		return deferred.promise();
+	}
+
+};

+ 25 - 0
tests/automated-better/event-resize/maxDate.js

@@ -0,0 +1,25 @@
+
+describe('maxDate event resizing', function() {
+
+	describe('when in month view', function() {
+		pushOptions({
+			defaultView: 'month',
+			defaultDate: '2017-06-01',
+			maxDate: '2017-06-09',
+			events: [
+				{ start: '2017-06-04', end: '2017-06-07' }
+			],
+			editable: true
+		});
+
+		it('won\'t go after maxDate', function() {
+			initCalendar();
+			return EventResizeUtils.resize(
+				DayGridRenderUtils.getSingleDayEl('2017-06-06')[0].getBoundingClientRect(),
+				DayGridRenderUtils.getDisabledEl(0)[0].getBoundingClientRect() // where Jun 9th would be
+			).then(function(res) {
+				expect(res.isSuccess).toBe(false);
+			});
+		});
+	});
+});