From 3f4ed46c1c18f96eb8561e9160114bbaf956a791 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Tue, 29 Dec 2015 15:26:18 -0800 Subject: [PATCH] [Time Conductor] More tests for date-time picker Sufficient for 100% line coverage. --- .../DateTimePickerControllerSpec.js | 111 ++++++++++++++++-- 1 file changed, 98 insertions(+), 13 deletions(-) diff --git a/platform/commonUI/general/test/controllers/DateTimePickerControllerSpec.js b/platform/commonUI/general/test/controllers/DateTimePickerControllerSpec.js index 0c676f6548..8fa122e438 100644 --- a/platform/commonUI/general/test/controllers/DateTimePickerControllerSpec.js +++ b/platform/commonUI/general/test/controllers/DateTimePickerControllerSpec.js @@ -65,19 +65,6 @@ define( ); }); - it("updates date/time state in scope when model changes", function () { - fireWatch( - "ngModel[field]", - moment.utc("1998-01-06 12:34:56").valueOf() - ); - expect(mockScope.date.year).toEqual(1998); - expect(mockScope.date.month).toEqual(0); // Months are zero-indexed - expect(mockScope.date.day).toEqual(6); - expect(mockScope.time.hours).toEqual(12); - expect(mockScope.time.minutes).toEqual(34); - expect(mockScope.time.seconds).toEqual(56); - }); - it("updates value in model when values in scope change", function () { mockScope.date = { year: 1998, @@ -94,6 +81,104 @@ define( .toEqual(moment.utc("1998-01-06 12:34:56").valueOf()); }); + describe("once initialized with model state", function () { + var testTime = moment.utc("1998-01-06 12:34:56").valueOf(); + + beforeEach(function () { + fireWatch("ngModel[field]", testTime); + }); + + it("exposes date/time values in scope", function () { + expect(mockScope.date.year).toEqual(1998); + expect(mockScope.date.month).toEqual(0); // Months are zero-indexed + expect(mockScope.date.day).toEqual(6); + expect(mockScope.time.hours).toEqual(12); + expect(mockScope.time.minutes).toEqual(34); + expect(mockScope.time.seconds).toEqual(56); + }); + + it("provides names for time properties", function () { + Object.keys(mockScope.time).forEach(function (key) { + expect(mockScope.nameFor(key)) + .toEqual(jasmine.any(String)); + }); + }); + + it("provides options for time properties", function () { + Object.keys(mockScope.time).forEach(function (key) { + expect(mockScope.optionsFor(key)) + .toEqual(jasmine.any(Array)); + }); + }); + + it("exposes times to populate calendar as a table", function () { + var matchingCell; + // Should be able to find the selected date + mockScope.table.forEach(function (row) { + row.forEach(function (cell) { + if (cell.dayOfYear === 6) { + matchingCell = cell; + } + }); + }); + expect(matchingCell).toEqual({ + year: 1998, + month: 0, + day: 6, + dayOfYear: 6 + }); + }); + + it("allows the displayed month to be advanced", function () { + // Around the edges of the displayed calendar we + // may be in previous or subsequent month, so + // test around the middle. + var i, originalMonth = mockScope.table[2][0].month; + + function mod12(month) { + return ((month % 12) + 12) % 12; + } + + for (i = 1; i <= 12; i += 1) { + mockScope.changeMonth(1); + expect(mockScope.table[2][0].month) + .toEqual(mod12(originalMonth + i)); + } + + for (i = 11; i >= -12; i -= 1) { + mockScope.changeMonth(-1); + expect(mockScope.table[2][0].month) + .toEqual(mod12(originalMonth + i)); + } + }); + + it("allows checking if a cell is in the current month", function () { + expect(mockScope.isInCurrentMonth(mockScope.table[2][0])) + .toBe(true); + }); + + it("allows cells to be selected", function () { + mockScope.select(mockScope.table[2][0]); + expect(mockScope.isSelected(mockScope.table[2][0])) + .toBe(true); + mockScope.select(mockScope.table[2][1]); + expect(mockScope.isSelected(mockScope.table[2][0])) + .toBe(false); + expect(mockScope.isSelected(mockScope.table[2][1])) + .toBe(true); + }); + + it("allows cells to be compared", function () { + var table = mockScope.table; + expect(mockScope.dateEquals(table[2][0], table[2][1])) + .toBe(false); + expect(mockScope.dateEquals(table[2][1], table[2][1])) + .toBe(true); + }); + + }); + + }); } );