aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2012.js
diff options
context:
space:
mode:
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.js266
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));
+}));