diff options
Diffstat (limited to 'public/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2012.js')
-rw-r--r-- | public/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2012.js | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/public/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2012.js b/public/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2012.js new file mode 100644 index 0000000..071df9b --- /dev/null +++ b/public/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2012.js @@ -0,0 +1,266 @@ +module('Mouse Navigation 2012', { + setup: function(){ + /* + Tests start with picker on March 31, 2012. Fun facts: + + * February 1, 2012 was on a Wednesday + * February 29, 2012 was on a Wednesday + * March 1, 2012 was on a Thursday + * March 31, 2012 was on a Saturday + */ + this.input = $('<input type="text" value="31-03-2012">') + .appendTo('#qunit-fixture') + .datepicker({format: "dd-mm-yyyy"}) + .focus(); // Activate for visibility checks + this.dp = this.input.data('datepicker'); + this.picker = this.dp.picker; + }, + teardown: function(){ + this.picker.remove(); + } +}); + +test('Selecting date resets viewDate and date', function(){ + var target; + + // Rendered correctly + equal(this.dp.viewMode, 0); + target = this.picker.find('.datepicker-days tbody td:nth(7)'); + equal(target.text(), '4'); // Should be Mar 4 + + // Updated internally on click + target.click(); + datesEqual(this.dp.viewDate, UTCDate(2012, 2, 4)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 4)); + + // Re-rendered on click + target = this.picker.find('.datepicker-days tbody td:first'); + equal(target.text(), '26'); // Should be Feb 29 +}); + +test('Navigating next/prev by month', function(){ + var target; + + equal(this.dp.viewMode, 0); + target = this.picker.find('.datepicker-days thead th.prev'); + ok(target.is(':visible'), 'Month:prev nav is visible'); + + // Updated internally on click + target.click(); + // Should handle month-length changes gracefully + datesEqual(this.dp.viewDate, UTCDate(2012, 1, 29)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + // Re-rendered on click + target = this.picker.find('.datepicker-days tbody td:first'); + equal(target.text(), '29'); // Should be Jan 29 + + target = this.picker.find('.datepicker-days thead th.next'); + ok(target.is(':visible'), 'Month:next nav is visible'); + + // Updated internally on click + target.click().click(); + // Graceful moonth-end handling carries over + datesEqual(this.dp.viewDate, UTCDate(2012, 3, 29)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + // Re-rendered on click + target = this.picker.find('.datepicker-days tbody td:first'); + equal(target.text(), '25'); // Should be Mar 25 + // (includes "old" days at start of month, even if that's all the first week-row consists of) +}); + +test('Navigating to/from year view', function(){ + var target; + + equal(this.dp.viewMode, 0); + target = this.picker.find('.datepicker-days thead th.datepicker-switch'); + ok(target.is(':visible'), 'View switcher is visible'); + + target.click(); + ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible'); + equal(this.dp.viewMode, 1); + // Not modified when switching modes + datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + // Change months to test internal state + target = this.picker.find('.datepicker-months tbody span:contains(Apr)'); + target.click(); + equal(this.dp.viewMode, 0); + // Only viewDate modified + datesEqual(this.dp.viewDate, UTCDate(2012, 3, 1)); // Apr 30 + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); +}); + +test('Navigating to/from decade view', function(){ + var target; + + equal(this.dp.viewMode, 0); + target = this.picker.find('.datepicker-days thead th.datepicker-switch'); + ok(target.is(':visible'), 'View switcher is visible'); + + target.click(); + ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible'); + equal(this.dp.viewMode, 1); + // Not modified when switching modes + datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + target = this.picker.find('.datepicker-months thead th.datepicker-switch'); + ok(target.is(':visible'), 'View switcher is visible'); + + target.click(); + ok(this.picker.find('.datepicker-years').is(':visible'), 'Year picker is visible'); + equal(this.dp.viewMode, 2); + // Not modified when switching modes + datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + // Change years to test internal state changes + target = this.picker.find('.datepicker-years tbody span:contains(2011)'); + target.click(); + equal(this.dp.viewMode, 1); + // Only viewDate modified + datesEqual(this.dp.viewDate, UTCDate(2011, 2, 1)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + target = this.picker.find('.datepicker-months tbody span:contains(Apr)'); + target.click(); + equal(this.dp.viewMode, 0); + // Only viewDate modified + datesEqual(this.dp.viewDate, UTCDate(2011, 3, 1)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); +}); + +test('Navigating prev/next in year view', function(){ + var target; + + equal(this.dp.viewMode, 0); + target = this.picker.find('.datepicker-days thead th.datepicker-switch'); + ok(target.is(':visible'), 'View switcher is visible'); + + target.click(); + ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible'); + equal(this.dp.viewMode, 1); + equal(this.picker.find('.datepicker-months thead th.datepicker-switch').text(), '2012'); + // Not modified when switching modes + datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + // Go to next year (2013) + target = this.picker.find('.datepicker-months thead th.next'); + target.click(); + equal(this.picker.find('.datepicker-months thead th.datepicker-switch').text(), '2013'); + // Only viewDate modified + datesEqual(this.dp.viewDate, UTCDate(2013, 2, 31)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + // Go to prev year (x2 == 2011) + target = this.picker.find('.datepicker-months thead th.prev'); + target.click().click(); + equal(this.picker.find('.datepicker-months thead th.datepicker-switch').text(), '2011'); + // Only viewDate modified + datesEqual(this.dp.viewDate, UTCDate(2011, 2, 31)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); +}); + +test('Navigating prev/next in decade view', function(){ + var target; + + equal(this.dp.viewMode, 0); + target = this.picker.find('.datepicker-days thead th.datepicker-switch'); + ok(target.is(':visible'), 'View switcher is visible'); + + target.click(); + ok(this.picker.find('.datepicker-months').is(':visible'), 'Month picker is visible'); + equal(this.dp.viewMode, 1); + // Not modified when switching modes + datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + target = this.picker.find('.datepicker-months thead th.datepicker-switch'); + ok(target.is(':visible'), 'View switcher is visible'); + + target.click(); + ok(this.picker.find('.datepicker-years').is(':visible'), 'Year picker is visible'); + equal(this.dp.viewMode, 2); + equal(this.picker.find('.datepicker-years thead th.datepicker-switch').text(), '2010-2019'); + // Not modified when switching modes + datesEqual(this.dp.viewDate, UTCDate(2012, 2, 31)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + // Go to next decade (2020-29) + target = this.picker.find('.datepicker-years thead th.next'); + target.click(); + equal(this.picker.find('.datepicker-years thead th.datepicker-switch').text(), '2020-2029'); + // Only viewDate modified + datesEqual(this.dp.viewDate, UTCDate(2022, 2, 31)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); + + // Go to prev year (x2 == 2000-09) + target = this.picker.find('.datepicker-years thead th.prev'); + target.click().click(); + equal(this.picker.find('.datepicker-years thead th.datepicker-switch').text(), '2000-2009'); + // Only viewDate modified + datesEqual(this.dp.viewDate, UTCDate(2002, 2, 31)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 2, 31)); +}); + +test('Selecting date from previous month resets viewDate and date, changing month displayed', function(){ + var target; + + // Rendered correctly + equal(this.dp.viewMode, 0); + target = this.picker.find('.datepicker-days tbody td:first'); + equal(target.text(), '26'); // Should be Feb 26 + equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'March 2012'); + + // Updated internally on click + target.click(); + equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'February 2012'); + datesEqual(this.dp.viewDate, UTCDate(2012, 1, 26)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 1, 26)); + + // Re-rendered on click + target = this.picker.find('.datepicker-days tbody td:first'); + equal(target.text(), '29'); // Should be Jan 29 +}); + +test('Selecting date from next month resets viewDate and date, changing month displayed', function(){ + var target; + + this.input.val('01-04-2012'); + this.dp.update(); + + // Rendered correctly + equal(this.dp.viewMode, 0); + target = this.picker.find('.datepicker-days tbody td:last'); + equal(target.text(), '5'); // Should be May 5 + equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'April 2012'); + + // Updated internally on click + target.click(); + equal(this.picker.find('.datepicker-days thead th.datepicker-switch').text(), 'May 2012'); + datesEqual(this.dp.viewDate, UTCDate(2012, 4, 5)); + datesEqual(this.dp.dates.get(-1), UTCDate(2012, 4, 5)); + + // Re-rendered on click + target = this.picker.find('.datepicker-days tbody td:first'); + equal(target.text(), '29'); // Should be Apr 29 +}); + +test('Selecting today from next month', patch_date(function(Date){ + var target; + this.dp.o.todayHighlight = true; + Date.now = new Date(2012, 2, 3); // Mar 3 + this.input.val('01-02-2012'); // Feb 1 + this.dp.update(); + + // Click the today button + target = this.picker.find('.datepicker-days tbody td.today'); + equal(target.text(), '3'); // Should be Mar 3 + target.click(); + + datesEqual(this.dp.viewDate, UTCDate(2012, 2, 3)); +})); |