2
0
Эх сурвалжийг харах

different behavior when end-time equals nextDayThreshold. tests

Adam Shaw 12 жил өмнө
parent
commit
1c28cf5a5f

+ 2 - 1
src/common/View.js

@@ -604,7 +604,8 @@ function View(element, calendar, viewName) {
 		// day offset for given date range
 		var rangeDayOffsetStart = dateToDayOffset(start);
 		var rangeDayOffsetEnd = dateToDayOffset(end); // an exclusive value
-		if (end.time() > nextDayThreshold) {
+		var endTimeMS = +end.time();
+		if (endTimeMS && endTimeMS >= nextDayThreshold) {
 			rangeDayOffsetEnd++;
 		}
 		rangeDayOffsetEnd = Math.max(rangeDayOffsetEnd, rangeDayOffsetStart + 1);

+ 70 - 0
tests/automated/nextDayThreshold.js

@@ -0,0 +1,70 @@
+
+describe('nextDayThreshold', function() {
+
+	// when a view object exposes its nextDayThreshold value (after some refactoring)...
+	//   TODO: detect the default of 9am
+	//   TODO: detect 2 or more different types of Duration-ish parsing
+
+	beforeEach(function() {
+		affix('#cal');
+	});
+
+	it('renders an event before the threshold', function() {
+		$('#cal').fullCalendar({
+			nextDayThreshold: '10:00:00',
+			defaultDate: '2014-06',
+			defaultView: 'month',
+			events: [
+				{
+					title: 'event1',
+					start: '2014-06-08T22:00:00',
+					end: '2014-06-10T09:00:00'
+				}
+			]
+		});
+		expect(renderedDayCount()).toBe(2);
+	});
+
+	it('renders an event equal to the threshold', function() {
+		$('#cal').fullCalendar({
+			nextDayThreshold: '10:00:00',
+			defaultDate: '2014-06',
+			defaultView: 'month',
+			events: [
+				{
+					title: 'event1',
+					start: '2014-06-08T22:00:00',
+					end: '2014-06-10T10:00:00'
+				}
+			]
+		});
+		expect(renderedDayCount()).toBe(3);
+	});
+
+	it('renders an event after the threshold', function() {
+		$('#cal').fullCalendar({
+			nextDayThreshold: '10:00:00',
+			defaultDate: '2014-06',
+			defaultView: 'month',
+			events: [
+				{
+					title: 'event1',
+					start: '2014-06-08T22:00:00',
+					end: '2014-06-10T11:00:00'
+				}
+			]
+		});
+		expect(renderedDayCount()).toBe(3);
+	});
+
+
+	function renderedDayCount() { // assumes only one event on the calendar
+		var cellWidth = $('.fc-sun').outerWidth(); // works with basic and agenda
+		var totalWidth = 0;
+		$('.fc-event').each(function() {
+			totalWidth += $(this).outerWidth();
+		});
+		return Math.round(totalWidth / cellWidth);
+	}
+
+});