Browse Source

improve validRange tests

Adam Shaw 9 years ago
parent
commit
c8d9879ca6

+ 0 - 6
tests/automated-better/view-dates/ViewDateUtils.js

@@ -11,12 +11,6 @@ var ViewDateUtils = {
 		var currentView = currentCalendar.getView();
 		expect(currentView.visibleRange.start).toEqualMoment(start);
 		expect(currentView.visibleRange.end).toEqualMoment(end);
-	},
-
-	expectNoVisibleRange: function() {
-		var currentView = currentCalendar.getView();
-		expect(currentView.visibleRange.start)
-			.toEqualMoment(currentView.visibleRange.end);
 	}
 
 };

+ 68 - 48
tests/automated-better/view-dates/validRange.js

@@ -1,67 +1,101 @@
 
-fdescribe('validRange dates', function() {
+describe('validRange dates', function() {
 	pushOptions({
 		defaultDate: '2017-06-08'
 	});
 
-	// TODO: function that receives now date
-
 	describe('when one week view', function() { // a view that has date-alignment by default
 		pushOptions({
-			defaultView: 'agendaWeek'
+			defaultView: 'agendaWeek' // default range = 2017-06-04 - 2017-06-11
 		});
 
 		describe('when default range is partially before validRange', function() {
 			pushOptions({
 				validRange: { start: '2017-06-06' }
 			});
+
+			it('allows full renderRange but restricts visibleRange', function() {
+				initCalendar();
+				ViewDateUtils.expectRenderRange('2017-06-04', '2017-06-11');
+				ViewDateUtils.expectVisibleRange('2017-06-06', '2017-06-11');
+			});
 		});
 
 		describe('when default range is partially after validRange', function() {
 			pushOptions({
 				validRange: { end: '2017-06-05' }
 			});
-		});
-
-		// when validRange shifts range
 
-		describe('when default range is completely before validRange (which is week start)', function() {
-			pushOptions({
-				validRange: { start: '2017-06-11' }
-			});
-			it('displays the first week on or after validRange', function() {
+			it('allows full renderRange but restricts visibleRange', function() {
 				initCalendar();
-				ViewDateUtils.expectVisibleRange('2017-06-11', '2017-06-18');
+				ViewDateUtils.expectRenderRange('2017-06-04', '2017-06-11');
+				ViewDateUtils.expectVisibleRange('2017-06-04', '2017-06-05');
 			});
 		});
 
-		describe('when range is completely before validRange (which is a Wednesday)', function() {
+		describe('when default range is completely before validRange', function() {
 			pushOptions({
-				validRange: { start: '2017-06-14' }
+				validRange: { start: '2017-06-14' } // a Wednesday
 			});
-			xit('displays the first week on or after validRange', function() {
+
+			it('initializes at earliest partially visible week', function() {
 				initCalendar();
-				ViewDateUtils.expectVisibleRange('2017-06-11', '2017-06-18');
+				ViewDateUtils.expectRenderRange('2017-06-11', '2017-06-18');
+				ViewDateUtils.expectVisibleRange('2017-06-14', '2017-06-18');
 			});
 		});
 
-		describe('when range is completely after validRange (which is week start)', function() {
+		describe('when default range is completely before validRange', function() {
 			pushOptions({
-				validRange: { end: '2017-06-04' }
+				validRange: { end: '2017-05-24' } // a Wednesday
 			});
-			xit('displays the last week on or before validRange', function() {
+
+			it('initializes at latest partially visible week', function() {
 				initCalendar();
-				ViewDateUtils.expectVisibleRange('2017-05-28', '2017-06-04');
+				ViewDateUtils.expectRenderRange('2017-05-21', '2017-05-28');
+				ViewDateUtils.expectVisibleRange('2017-05-21', '2017-05-24');
 			});
 		});
 
-		describe('when range is completely after validRange (which is a Wednesday)', function() {
-			pushOptions({
-				validRange: { end: '2017-05-31' }
+		describe('when validRange is a function', function() {
+
+			it('receives the nowDate', function() {
+				var nowInput = '2017-06-09T06:00:00';
+
+				var validRangeSpy = spyOnCalendarCallback('validRange', function(date) {
+					expect(moment.isMoment(date)).toBe(true);
+					expect(date).toEqualMoment(nowInput);
+				});
+
+				initCalendar({
+					now: nowInput
+				});
+
+				expect(validRangeSpy).toHaveBeenCalled();
+			});
+
+			it('can return a range object with strings', function() {
+				var validRangeSpy = spyOnCalendarCallback('validRange', function() {
+					return { start: '2017-06-06' };
+				});
+
+				initCalendar();
+
+				expect(validRangeSpy).toHaveBeenCalled();
+				ViewDateUtils.expectRenderRange('2017-06-04', '2017-06-11');
+				ViewDateUtils.expectVisibleRange('2017-06-06', '2017-06-11');
 			});
-			xit('displays the last week on or before validRange', function() {
+
+			it('can return a range object with moments', function() {
+				var validRangeSpy = spyOnCalendarCallback('validRange', function() {
+					return { start: $.fullCalendar.moment.parseZone('2017-06-06') };
+				});
+
 				initCalendar();
-				ViewDateUtils.expectVisibleRange('2017-05-28', '2017-06-04');
+
+				expect(validRangeSpy).toHaveBeenCalled();
+				ViewDateUtils.expectRenderRange('2017-06-04', '2017-06-11');
+				ViewDateUtils.expectVisibleRange('2017-06-06', '2017-06-11');
 			});
 		});
 	});
@@ -72,40 +106,26 @@ fdescribe('validRange dates', function() {
 			duration: { days: 3 }
 		});
 
-		// when there is no shifting
-
-		describeOptions({
-			'when no validRange': {},
-			'when range is partially before validRange': { validRange: { start: '2017-06-09' } },
-			'when range is partially after validRange': { validRange: { end: '2017-06-10' } }
-		}, function() {
-
-			xit('displays the whole range', function() {
-				initCalendar();
-				ViewDateUtils.expectVisibleRange('2017-06-08', '2017-06-11');
-			});
-		});
-
-		// when validRange shifts range
-
-		describe('when range is completely before of validRange (which is a Wednesday)', function() {
+		describe('when default range is completely before of validRange', function() {
 			pushOptions({
 				validRange: { start: '2017-06-14' }
 			});
-			xit('displays the last full day as validRange', function() {
+			it('renders earliest three valid days', function() {
 				initCalendar();
+				ViewDateUtils.expectRenderRange('2017-06-14', '2017-06-17');
 				ViewDateUtils.expectVisibleRange('2017-06-14', '2017-06-17');
 			});
 		});
 
-		describe('when range is completely after validRange (which is a Wednesday)', function() {
+		describe('when default range is completely after validRange', function() {
 			pushOptions({
 				validRange: { end: '2017-05-31' }
 			});
-			xit('displays the first full date as validRange', function() {
+			it('renders latest possible valid day and two invalid days', function() {
 				initCalendar();
-				ViewDateUtils.expectVisibleRange('2017-05-31', '2017-06-03');
+				ViewDateUtils.expectRenderRange('2017-05-30', '2017-06-02');
+				ViewDateUtils.expectVisibleRange('2017-05-30', '2017-05-31');
 			});
 		});
 	});
-});
+});

+ 2 - 2
tests/automated-better/view-render/validRange.js

@@ -1,7 +1,7 @@
 
 describe('validRange rendering', function() {
 
-	describe('start constraint', function() {
+	describe('with hardcoded start constraint', function() {
 
 		describe('when month view', function() {
 			pushOptions({
@@ -30,7 +30,7 @@ describe('validRange rendering', function() {
 		});
 	});
 
-	describe('end constraint', function() {
+	describe('with hardcoded end constraint', function() {
 
 		describe('when month view', function() {
 			pushOptions({