瀏覽代碼

streamline tests. add tests for agenda and basic views

Casey Holzer 9 年之前
父節點
當前提交
39e17d8dcf
共有 1 個文件被更改,包括 185 次插入197 次删除
  1. 185 197
      tests/automated/height-and-contentHeight.js

+ 185 - 197
tests/automated/height-and-contentHeight.js

@@ -59,237 +59,225 @@
 			asAMethod = bool;
 		});
 
-		describe('when in month view', function() {
-			beforeEach(function() {
-				options.defaultView = 'month';
-			});
-
-			describe('as a number, when there are no events', function() {
-				it('should be the specified height, with no scrollbars', function() {
-					init(600);
-					expect(Math.round(heightElm.outerHeight())).toBe(600);
-					expect('.fc-day-grid-container').not.toHaveScrollbars();
-				});
-			});
-
-			describe('as a number, when there is one tall row of events', function() {
+		describe('for ' + heightProp, function() {
+			describe('when in month view', function() {
 				beforeEach(function() {
-					options.events = repeatClone({ title: 'event', start: '2014-08-04' }, 9);
+					options.defaultView = 'month';
 				});
-				it('should take away height from other rows, but not do scrollbars', function() {
-					init(600);
-					var rows = $('.fc-day-grid .fc-row');
-					var tallRow = rows.eq(1);
-					var shortRows = rows.not(tallRow); // 0, 2, 3, 4, 5
-					var shortHeight = shortRows.eq(0).outerHeight();
-
-					expectHeight(600);
-
-					shortRows.each(function(i, node) {
-						var rowHeight = $(node).outerHeight();
-						var diff = Math.abs(rowHeight - shortHeight);
-						expect(diff).toBeLessThan(10); // all roughly the same
-					});
 
-					expect(tallRow.outerHeight()).toBeGreaterThan(shortHeight * 2); // much taller
-					expect('.fc-day-grid-container').not.toHaveScrollbars();
-				});
-			});
-
-			describe('as a number, when there are many tall rows of events', function() {
-				beforeEach(function() {
-					options.events = [].concat(
-						repeatClone({ title: 'event0', start: '2014-07-28' }, 9),
-						repeatClone({ title: 'event1', start: '2014-08-04' }, 9),
-						repeatClone({ title: 'event2', start: '2014-08-11' }, 9),
-						repeatClone({ title: 'event3', start: '2014-08-18' }, 9),
-						repeatClone({ title: 'event4', start: '2014-08-25' }, 9),
-						repeatClone({ title: 'event5', start: '2014-09-01' }, 9)
-					);
-				});
-				it('height is correct and scrollbars show up', function() {
-					init(600);
-					expectHeight(600);
-					expect($('.fc-day-grid-container')).toHaveScrollbars();
-				});
-			});
+				[
+					{ description: 'as a number', height: 600 },
+					{ description: 'as a function', height: getParentHeight, heightWrapper: true }
+				].forEach(function(testInfo) {
+					describe(testInfo.description, function() {
+						if (testInfo.heightWrapper) {
+							beforeEach(function() {
+								calendarEl.wrap('<div class="calendar-container" style="height: 600px;" />');
+							});
+						}
 
-			describe('as a function, when there are no events', function() {
-				beforeEach(function() {
-					calendarEl.wrap('<div class="calendar-container" style="height: 600px;" />');
-				});
-				it('should be the specified height, with no scrollbars', function() {
-					init(getParentHeight);
-					expect(Math.round(heightElm.outerHeight())).toBe(600);
-					expect('.fc-day-grid-container').not.toHaveScrollbars();
-				});
-			});
+						describe('when there are no events', function() {
+							it('should be the specified height, with no scrollbars', function() {
+								init(testInfo.height);
+								expect(Math.round(heightElm.outerHeight())).toBe(600);
+								expect('.fc-day-grid-container').not.toHaveScrollbars();
+							});
+						});
 
-			describe('as a function, when there is one tall row of events', function() {
-				beforeEach(function() {
-					calendarEl.wrap('<div class="calendar-container" style="height: 600px;" />');
-					options.events = repeatClone({ title: 'event', start: '2014-08-04' }, 9);
-				});
-				it('should take away height from other rows, but not do scrollbars', function() {
-					init(getParentHeight);
-					var rows = $('.fc-day-grid .fc-row');
-					var tallRow = rows.eq(1);
-					var shortRows = rows.not(tallRow); // 0, 2, 3, 4, 5
-					var shortHeight = shortRows.eq(0).outerHeight();
-
-					expectHeight(600);
-
-					shortRows.each(function(i, node) {
-						var rowHeight = $(node).outerHeight();
-						var diff = Math.abs(rowHeight - shortHeight);
-						expect(diff).toBeLessThan(10); // all roughly the same
-					});
+						describe('when there is one tall row of events', function() {
+							beforeEach(function() {
+								options.events = repeatClone({ title: 'event', start: '2014-08-04' }, 9);
+							});
 
-					expect(tallRow.outerHeight()).toBeGreaterThan(shortHeight * 2); // much taller
-					expect('.fc-day-grid-container').not.toHaveScrollbars();
-				});
-			});
+							it('should take away height from other rows, but not do scrollbars', function() {
+								init(testInfo.height);
+								var rows = $('.fc-day-grid .fc-row');
+								var tallRow = rows.eq(1);
+								var shortRows = rows.not(tallRow); // 0, 2, 3, 4, 5
+								var shortHeight = shortRows.eq(0).outerHeight();
 
-			describe('as a function, when there are many tall rows of events', function() {
-				beforeEach(function() {
-					calendarEl.wrap('<div class="calendar-container" style="height: 600px;" />');
-					options.events = [].concat(
-						repeatClone({ title: 'event0', start: '2014-07-28' }, 9),
-						repeatClone({ title: 'event1', start: '2014-08-04' }, 9),
-						repeatClone({ title: 'event2', start: '2014-08-11' }, 9),
-						repeatClone({ title: 'event3', start: '2014-08-18' }, 9),
-						repeatClone({ title: 'event4', start: '2014-08-25' }, 9),
-						repeatClone({ title: 'event5', start: '2014-09-01' }, 9)
-					);
-				});
-				it('height is correct and scrollbars show up', function() {
-					init(getParentHeight);
-					expectHeight(600);
-					expect($('.fc-day-grid-container')).toHaveScrollbars();
-				});
-			});
+								expectHeight(600);
 
-			describe('as "auto", when there are many tall rows of events', function() {
-				beforeEach(function() {
-					options.events = [].concat(
-						repeatClone({ title: 'event0', start: '2014-07-28' }, 9),
-						repeatClone({ title: 'event1', start: '2014-08-04' }, 9),
-						repeatClone({ title: 'event2', start: '2014-08-11' }, 9),
-						repeatClone({ title: 'event3', start: '2014-08-18' }, 9),
-						repeatClone({ title: 'event4', start: '2014-08-25' }, 9),
-						repeatClone({ title: 'event5', start: '2014-09-01' }, 9)
-					);
-				});
-				it('height is really tall and there are no scrollbars', function() {
-					init('auto');
-					expect(heightElm.outerHeight()).toBeGreaterThan(1000); // pretty tall
-					expect($('.fc-day-grid-container')).not.toHaveScrollbars();
-				});
-			});
-		});
+								shortRows.each(function(i, node) {
+									var rowHeight = $(node).outerHeight();
+									var diff = Math.abs(rowHeight - shortHeight);
+									expect(diff).toBeLessThan(10); // all roughly the same
+								});
 
-		[ 'basicWeek', 'basicDay' ].forEach(function(viewName) {
-			describe('in ' + viewName + ' view', function() {
-				beforeEach(function() {
-					options.defaultView = viewName;
-				});
+								expect(tallRow.outerHeight()).toBeGreaterThan(shortHeight * 2); // much taller
+								expect('.fc-day-grid-container').not.toHaveScrollbars();
+							});
+						});
 
-				describe('as a number, when there are no events', function() {
-					it('should be the specified height, with no scrollbars', function() {
-						init(600);
-						expectHeight(600);
-						expect('.fc-day-grid-container').not.toHaveScrollbars();
-					});
-				});
+						describe('when there are many tall rows of events', function() {
+							beforeEach(function() {
+								options.events = [].concat(
+									repeatClone({ title: 'event0', start: '2014-07-28' }, 9),
+									repeatClone({ title: 'event1', start: '2014-08-04' }, 9),
+									repeatClone({ title: 'event2', start: '2014-08-11' }, 9),
+									repeatClone({ title: 'event3', start: '2014-08-18' }, 9),
+									repeatClone({ title: 'event4', start: '2014-08-25' }, 9),
+									repeatClone({ title: 'event5', start: '2014-09-01' }, 9)
+								);
+							});
 
-				describe('as a number, when there are many events', function() {
-					beforeEach(function() {
-						options.events = repeatClone({ title: 'event', start: '2014-08-01' }, 100);
-					});
-					it('should have the correct height, with scrollbars', function() {
-						init(600);
-						expectHeight(600);
-						expect('.fc-day-grid-container').toHaveScrollbars();
+							it('height is correct and scrollbars show up', function() {
+								init(testInfo.height);
+								expectHeight(600);
+								expect($('.fc-day-grid-container')).toHaveScrollbars();
+							});
+						});
 					});
 				});
 
-				describe('as "auto", when there are many events', function() {
+				describe('as "auto", when there are many tall rows of events', function() {
 					beforeEach(function() {
-						options.events = repeatClone({ title: 'event', start: '2014-08-01' }, 100);
+						options.events = [].concat(
+							repeatClone({ title: 'event0', start: '2014-07-28' }, 9),
+							repeatClone({ title: 'event1', start: '2014-08-04' }, 9),
+							repeatClone({ title: 'event2', start: '2014-08-11' }, 9),
+							repeatClone({ title: 'event3', start: '2014-08-18' }, 9),
+							repeatClone({ title: 'event4', start: '2014-08-25' }, 9),
+							repeatClone({ title: 'event5', start: '2014-09-01' }, 9)
+						);
 					});
-					it('should be really tall with no scrollbars', function() {
+					it('height is really tall and there are no scrollbars', function() {
 						init('auto');
 						expect(heightElm.outerHeight()).toBeGreaterThan(1000); // pretty tall
-						expect('.fc-day-grid-container').not.toHaveScrollbars();
+						expect($('.fc-day-grid-container')).not.toHaveScrollbars();
 					});
 				});
 			});
-		});
-
-		[ 'agendaWeek', 'agendaDay' ].forEach(function(viewName) {
-			describe('in ' + viewName + ' view', function() {
-				beforeEach(function() {
-					options.defaultView = viewName;
-				});
 
-				$.each({
-					'with no all-day section': { allDaySlot: false },
-					'with no all-day events': { },
-					'with some all-day events': { events: repeatClone({ title: 'event', start: '2014-08-01' }, 6) }
-				}, function(desc, moreOptions) {
-					describe(desc, function() {
-						beforeEach(function() {
-							$.extend(options, moreOptions);
-						});
+			[ 'basicWeek', 'basicDay' ].forEach(function(viewName) {
+				describe('in ' + viewName + ' view', function() {
+					beforeEach(function() {
+						options.defaultView = viewName;
+					});
 
-						describe('as a number, with only a few slots', function() {
-							beforeEach(function() {
-								options.minTime = '06:00:00';
-								options.maxTime = '10:00:00';
+					[
+						{ description: 'as a number', height: 600 },
+						{ description: 'as a function', height: getParentHeight, heightWrapper: true }
+					].forEach(function(testInfo) {
+						describe(testInfo.description, function() {
+							if (testInfo.heightWrapper) {
+								beforeEach(function() {
+									calendarEl.wrap('<div class="calendar-container" style="height: 600px;" />');
+								});
+							}
+
+							describe('when there are no events', function() {
+								it('should be the specified height, with no scrollbars', function() {
+									init(testInfo.height);
+									expectHeight(600);
+									expect('.fc-day-grid-container').not.toHaveScrollbars();
+								});
 							});
-							it('should be the correct height, with a horizontal rule to occupy space', function() {
-								init(600);
-								expectHeight(600);
-								expect($('.fc-time-grid > hr')).toBeVisible();
+
+							describe('when there are many events', function() {
+								beforeEach(function() {
+									options.events = repeatClone({ title: 'event', start: '2014-08-01' }, 100);
+								});
+								it('should have the correct height, with scrollbars', function() {
+									init(testInfo.height);
+									expectHeight(600);
+									expect('.fc-day-grid-container').toHaveScrollbars();
+								});
 							});
 						});
+					});
 
-						describe('as a number, with many slots', function() {
-							beforeEach(function() {
-								options.minTime = '00:00:00';
-								options.maxTime = '24:00:00';
-							});
-							it('should be the correct height, with scrollbars and no filler hr', function() {
-								init(600);
-								expectHeight(600);
-								expect($('.fc-time-grid-container')).toHaveScrollbars();
-								expect($('.fc-time-grid > hr')).not.toBeVisible();
-							});
+					describe('as "auto", when there are many events', function() {
+						beforeEach(function() {
+							options.events = repeatClone({ title: 'event', start: '2014-08-01' }, 100);
 						});
+						it('should be really tall with no scrollbars', function() {
+							init('auto');
+							expect(heightElm.outerHeight()).toBeGreaterThan(1000); // pretty tall
+							expect('.fc-day-grid-container').not.toHaveScrollbars();
+						});
+					});
+				});
+			});
+
+			[ 'agendaWeek', 'agendaDay' ].forEach(function(viewName) {
+				describe('in ' + viewName + ' view', function() {
+					beforeEach(function() {
+						options.defaultView = viewName;
+					});
 
-						describe('as "auto", with only a few slots', function() {
+					$.each({
+						'with no all-day section': { allDaySlot: false },
+						'with no all-day events': { },
+						'with some all-day events': { events: repeatClone({ title: 'event', start: '2014-08-01' }, 6) }
+					}, function(desc, moreOptions) {
+						describe(desc, function() {
 							beforeEach(function() {
-								options.minTime = '06:00:00';
-								options.maxTime = '10:00:00';
+								$.extend(options, moreOptions);
 							});
-							it('should be really short with no scrollbars nor horizontal rule', function() {
-								init('auto');
-								expect(heightElm.outerHeight()).toBeLessThan(500); // pretty short
-								expect($('.fc-time-grid-container')).not.toHaveScrollbars();
-								expect($('.fc-time-grid > hr')).not.toBeVisible();
+
+							[
+								{ description: 'as a number', height: 600 },
+								{ description: 'as a function', height: getParentHeight, heightWrapper: true }
+							].forEach(function(testInfo) {
+								describe(testInfo.description, function() {
+									if (testInfo.heightWrapper) {
+										beforeEach(function() {
+											calendarEl.wrap('<div class="calendar-container" style="height: 600px;" />');
+										});
+									}
+
+									describe('with only a few slots', function() {
+										beforeEach(function() {
+											options.minTime = '06:00:00';
+											options.maxTime = '10:00:00';
+										});
+										it('should be the correct height, with a horizontal rule to occupy space', function() {
+											init(testInfo.height);
+											expectHeight(600);
+											expect($('.fc-time-grid > hr')).toBeVisible();
+										});
+									});
+
+									describe('with many slots', function() {
+										beforeEach(function() {
+											options.minTime = '00:00:00';
+											options.maxTime = '24:00:00';
+										});
+										it('should be the correct height, with scrollbars and no filler hr', function() {
+											init(testInfo.height);
+											expectHeight(600);
+											expect($('.fc-time-grid-container')).toHaveScrollbars();
+											expect($('.fc-time-grid > hr')).not.toBeVisible();
+										});
+									});
+								});
 							});
-						});
 
-						describe('as a "auto", with many slots', function() {
-							beforeEach(function() {
-								options.minTime = '00:00:00';
-								options.maxTime = '24:00:00';
+							describe('as "auto", with only a few slots', function() {
+								beforeEach(function() {
+									options.minTime = '06:00:00';
+									options.maxTime = '10:00:00';
+								});
+								it('should be really short with no scrollbars nor horizontal rule', function() {
+									init('auto');
+									expect(heightElm.outerHeight()).toBeLessThan(500); // pretty short
+									expect($('.fc-time-grid-container')).not.toHaveScrollbars();
+									expect($('.fc-time-grid > hr')).not.toBeVisible();
+								});
 							});
-							it('should be really tall with no scrollbars nor horizontal rule', function() {
-								init('auto');
-								expect(heightElm.outerHeight()).toBeGreaterThan(900); // pretty tall
-								expect($('.fc-time-grid-container')).not.toHaveScrollbars();
-								expect($('.fc-time-grid > hr')).not.toBeVisible();
+
+							describe('as a "auto", with many slots', function() {
+								beforeEach(function() {
+									options.minTime = '00:00:00';
+									options.maxTime = '24:00:00';
+								});
+								it('should be really tall with no scrollbars nor horizontal rule', function() {
+									init('auto');
+									expect(heightElm.outerHeight()).toBeGreaterThan(900); // pretty tall
+									expect($('.fc-time-grid-container')).not.toHaveScrollbars();
+									expect($('.fc-time-grid > hr')).not.toBeVisible();
+								});
 							});
 						});
 					});