From 1c28cf5a5f73cb70375f84c02fd62a1f2183470a Mon Sep 17 00:00:00 2001 From: Adam Shaw Date: Sun, 2 Feb 2014 23:10:37 -0800 Subject: [PATCH] different behavior when end-time equals nextDayThreshold. tests --- src/common/View.js | 3 +- tests/automated/nextDayThreshold.js | 70 +++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 tests/automated/nextDayThreshold.js diff --git a/src/common/View.js b/src/common/View.js index fa4bb80..80a8e07 100644 --- a/src/common/View.js +++ b/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); diff --git a/tests/automated/nextDayThreshold.js b/tests/automated/nextDayThreshold.js new file mode 100644 index 0000000..c934d4c --- /dev/null +++ b/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); + } + +}); \ No newline at end of file