From 6fcfb7c04d32e1c8b26a312295bf7ac3ec2d2ad7 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Fri, 13 Jul 2018 19:06:45 +0200 Subject: Fixed many permissions and began admin interface --- .../tests/suites/calendar-weeks.js | 48 + .../bootstrap-datepicker/tests/suites/component.js | 267 +++ .../bootstrap-datepicker/tests/suites/data-api.js | 114 ++ .../bootstrap-datepicker/tests/suites/events.js | 507 ++++++ .../bootstrap-datepicker/tests/suites/formats.js | 314 ++++ .../bootstrap-datepicker/tests/suites/inline.js | 28 + .../tests/suites/keyboard_navigation/2011.js | 228 +++ .../tests/suites/keyboard_navigation/2012.js | 483 ++++++ .../tests/suites/keyboard_navigation/all.js | 62 + .../bootstrap-datepicker/tests/suites/methods.js | 188 ++ .../tests/suites/methods_jquery.js | 26 + .../tests/suites/mouse_navigation/2011.js | 66 + .../tests/suites/mouse_navigation/2012.js | 266 +++ .../tests/suites/mouse_navigation/all.js | 33 + .../tests/suites/noconflict.js | 20 + .../bootstrap-datepicker/tests/suites/options.js | 1802 ++++++++++++++++++++ .../bootstrap-datepicker/tests/suites/timezone.js | 24 + .../tests/suites/touch_navigation/all.js | 27 + 18 files changed, 4503 insertions(+) create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/calendar-weeks.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/component.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/data-api.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/events.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/formats.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/inline.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/keyboard_navigation/2011.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/keyboard_navigation/2012.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/keyboard_navigation/all.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/methods.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/methods_jquery.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2011.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2012.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/all.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/noconflict.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/options.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/timezone.js create mode 100644 public/bower_components/bootstrap-datepicker/tests/suites/touch_navigation/all.js (limited to 'public/bower_components/bootstrap-datepicker/tests/suites') diff --git a/public/bower_components/bootstrap-datepicker/tests/suites/calendar-weeks.js b/public/bower_components/bootstrap-datepicker/tests/suites/calendar-weeks.js new file mode 100644 index 0000000..258c29c --- /dev/null +++ b/public/bower_components/bootstrap-datepicker/tests/suites/calendar-weeks.js @@ -0,0 +1,48 @@ +module('Calendar Weeks', { + setup: function(){ + this.input = $('') + .appendTo('#qunit-fixture') + .val('2013-01-14') + .datepicker({ + format: 'yyyy-mm-dd', + calendarWeeks: true + }) + .focus(); // Activate for visibility checks + this.dp = this.input.data('datepicker'); + this.picker = this.dp.picker; + }, + teardown: function(){ + this.picker.remove(); + } +}); + +test('adds cw header column', function(){ + var target = this.picker.find('.datepicker-days thead tr:nth-child(3) th:first-child'); + ok(target.hasClass('cw'), 'First column heading is from cw column'); +}); + +test('adds calendar week cells to each day row', function(){ + var target = this.picker.find('.datepicker-days tbody tr'); + + expect(target.length); + target.each(function(i){ + var t = $(this).children().first(); + ok(t.hasClass('cw'), "First column is cw column"); + }); +}); + +test('displays correct calendar week', function(){ + var target = this.picker.find('.datepicker-days tbody tr'); + + expect(target.length); + target.each(function(i){ + var t = $(this).children().first(); + equal(t.text(), i+1, "Displays correct calendar weeks"); + }); +}); + +test('it prepends column to switcher thead row', function(){ + var target = this.picker.find('.datepicker-days thead tr:nth-child(2)'); + equal(target.children().length, 3, 'first row has 3 columns'); + ok(!target.children().first().hasClass('cw'), 'cw column is not prepended'); +}); diff --git a/public/bower_components/bootstrap-datepicker/tests/suites/component.js b/public/bower_components/bootstrap-datepicker/tests/suites/component.js new file mode 100644 index 0000000..7540b73 --- /dev/null +++ b/public/bower_components/bootstrap-datepicker/tests/suites/component.js @@ -0,0 +1,267 @@ +module('Component', { + setup: function(){ + this.component = $('
'+ + ''+ + ''+ + '
') + .appendTo('#qunit-fixture') + .datepicker({format: "dd-mm-yyyy"}); + this.input = this.component.find('input'); + this.addon = this.component.find('.add-on'); + this.dp = this.component.data('datepicker'); + this.picker = this.dp.picker; + }, + teardown: function(){ + this.picker.remove(); + } +}); + + +test('Component gets date/viewDate from input value', function(){ + datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12)); + datesEqual(this.dp.viewDate, UTCDate(2012, 1, 12)); +}); + +test('Activation by component', function(){ + ok(!this.picker.is(':visible')); + this.addon.click(); + ok(this.picker.is(':visible')); +}); + +test('Dont activation (by disabled) by component', function(){ + ok(!this.picker.is(':visible')); + this.input.prop('disabled', true); + this.addon.click(); + ok(!this.picker.is(':visible')); + this.input.prop('disabled', false); +}); + +test('simple keyboard nav test', function(){ + var target; + + // Keyboard nav only works with non-readonly inputs + this.input.removeAttr('readonly'); + + equal(this.dp.viewMode, 0); + target = this.picker.find('.datepicker-days thead th.datepicker-switch'); + equal(target.text(), 'February 2012', 'Title is "February 2012"'); + datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12)); + datesEqual(this.dp.viewDate, UTCDate(2012, 1, 12)); + + // Focus/open + this.addon.click(); + + // Navigation: -1 day, left arrow key + this.input.trigger({ + type: 'keydown', + keyCode: 37 + }); + datesEqual(this.dp.viewDate, UTCDate(2012, 1, 11)); + datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12)); + datesEqual(this.dp.focusDate, UTCDate(2012, 1, 11)); + // Month not changed + target = this.picker.find('.datepicker-days thead th.datepicker-switch'); + equal(target.text(), 'February 2012', 'Title is "February 2012"'); + + // Navigation: +1 month, shift + right arrow key + this.input.trigger({ + type: 'keydown', + keyCode: 39, + shiftKey: true + }); + datesEqual(this.dp.viewDate, UTCDate(2012, 2, 11)); + datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12)); + datesEqual(this.dp.focusDate, UTCDate(2012, 2, 11)); + target = this.picker.find('.datepicker-days thead th.datepicker-switch'); + equal(target.text(), 'March 2012', 'Title is "March 2012"'); + + // Navigation: -1 year, ctrl + left arrow key + this.input.trigger({ + type: 'keydown', + keyCode: 37, + ctrlKey: true + }); + datesEqual(this.dp.viewDate, UTCDate(2011, 2, 11)); + datesEqual(this.dp.getUTCDate(), UTCDate(2012, 1, 12)); + datesEqual(this.dp.focusDate, UTCDate(2011, 2, 11)); + target = this.picker.find('.datepicker-days thead th.datepicker-switch'); + equal(target.text(), 'March 2011', 'Title is "March 2011"'); +}); + +test('setValue', function(){ + this.dp.dates.replace(UTCDate(2012, 2, 13)); + this.dp.setValue(); + datesEqual(this.dp.dates[0], UTCDate(2012, 2, 13)); + equal(this.input.val(), '13-03-2012'); +}); + +test('update', function(){ + this.input.val('13-03-2012'); + this.dp.update(); + equal(this.dp.dates.length, 1); + datesEqual(this.dp.dates[0], UTCDate(2012, 2, 13)); +}); + +test('Navigating to/from decade view', function(){ + var target; + + this.addon.click(); + this.input.val('31-03-2012'); + this.dp.update(); + + 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[0], 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[0], 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[0], 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[0], UTCDate(2012, 2, 31)); +}); + +test('Selecting date resets viewDate and date', function(){ + var target; + + this.addon.click(); + this.input.val('31-03-2012'); + this.dp.update(); + + // Rendered correctly + equal(this.dp.viewMode, 0); + target = this.picker.find('.datepicker-days tbody td:first'); + equal(target.text(), '26'); // Should be Feb 26 + + // Updated internally on click + target.click(); + datesEqual(this.dp.viewDate, UTCDate(2012, 1, 26)); + datesEqual(this.dp.dates[0], 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('"destroy" removes associated HTML', function(){ + var datepickerDivSelector = '.datepicker'; + + $('#datepicker').datepicker('show'); + + //there should be one datepicker initiated so that means one hidden .datepicker div + equal($(datepickerDivSelector).length, 1); + this.component.datepicker('destroy'); + equal($(datepickerDivSelector).length, 0);//hidden HTML should be gone +}); + +test('"remove" is an alias for "destroy"', function(){ + var called, originalDestroy = this.dp.destroy; + this.dp.destroy = function () { + called = true; + return originalDestroy.apply(this, arguments); + }; + this.dp.remove(); + ok(called); +}); + +test('Does not block events', function(){ + var clicks = 0; + function handler(){ + clicks++; + } + $('#qunit-fixture').on('click', '.add-on', handler); + this.addon.click(); + equal(clicks, 1); + $('#qunit-fixture').off('click', '.add-on', handler); +}); + + +test('date and viewDate must be between startDate and endDate when setStartDate called', function() { + this.dp.setDate(new Date(2013, 1, 1)); + datesEqual(this.dp.dates[0], UTCDate(2013, 1, 1)); + datesEqual(this.dp.viewDate, UTCDate(2013, 1, 1)); + this.dp.setStartDate(new Date(2013, 5, 6)); + datesEqual(this.dp.viewDate, UTCDate(2013, 5, 6)); + equal(this.dp.dates.length, 0); +}); + +test('date and viewDate must be between startDate and endDate when setEndDate called', function() { + this.dp.setDate(new Date(2013, 11, 1)); + datesEqual(this.dp.dates[0], UTCDate(2013, 11, 1)); + datesEqual(this.dp.viewDate, UTCDate(2013, 11, 1)); + this.dp.setEndDate(new Date(2013, 5, 6)); + datesEqual(this.dp.viewDate, UTCDate(2013, 5, 6)); + equal(this.dp.dates.length, 0); +}); + +test('picker should render fine when `$.fn.show` and `$.fn.hide` are overridden', patch_show_hide(function () { + var viewModes = $.fn.datepicker.DPGlobal.viewModes, + minViewMode = this.dp.o.minViewMode, + maxViewMode = this.dp.o.maxViewMode, + childDivs = this.picker.children('div'); + + this.dp.setViewMode(minViewMode); + + // Overwritten `$.fn.hide` method adds the `foo` class to its matched elements + var curDivShowing = childDivs.filter('.datepicker-' + viewModes[minViewMode].clsName); + ok(!curDivShowing.hasClass('foo'), 'Shown div does not have overridden `$.fn.hide` side-effects'); + + // Check that other classes do have `foo` class + var divNotShown; + for (var curViewMode = minViewMode + 1; curViewMode <= maxViewMode; curViewMode++) { + divNotShown = childDivs.filter('.datepicker-' + viewModes[curViewMode].clsName); + ok(divNotShown.hasClass('foo'), 'Other divs do have overridden `$.fn.hide` side-effects'); + } +})); + +test('Focused ceil for decade/century/millenium views', function(){ + var input = $('') + .appendTo('#qunit-fixture') + .datepicker({ + startView: 2, + defaultViewDate: { + year: 2115 + } + }), + dp = input.data('datepicker'), + picker = dp.picker, + target; + + input.focus(); + + target = picker.find('.datepicker-years tbody .focused'); + ok(target.text() === '2115', 'Year cell is focused'); + + picker.find('.datepicker-years thead th.datepicker-switch').click(); + target = picker.find('.datepicker-decades tbody .focused'); + ok(target.text() === '2110', 'Decade cell is focused'); + + picker.find('.datepicker-decades thead th.datepicker-switch').click(); + target = picker.find('.datepicker-centuries tbody .focused'); + ok(target.text() === '2100', 'Century cell is focused'); +}); diff --git a/public/bower_components/bootstrap-datepicker/tests/suites/data-api.js b/public/bower_components/bootstrap-datepicker/tests/suites/data-api.js new file mode 100644 index 0000000..a751f57 --- /dev/null +++ b/public/bower_components/bootstrap-datepicker/tests/suites/data-api.js @@ -0,0 +1,114 @@ +module('DATA-API'); + +test('DATA-API: data-provide="datepicker" on input; focus', function(){ + var input = $('') + .appendTo('#qunit-fixture'); + input.focus(); + ok(input.data('datepicker'), 'datepicker is initialized by "focus" event'); +}); + +test('DATA-API: data-provide="datepicker" on input; click', function(){ + var input = $('') + .appendTo('#qunit-fixture'); + input.click(); + ok(input.data('datepicker'), 'datepicker is initialized by "focus" event'); +}); + +test('DATA-API: data-provide="datepicker" on component', function(){ + var html, comp; + + html = '
'+ + ''+ + '
'; + + comp = $(html).appendTo('#qunit-fixture'); + comp.find('input').focus(); + ok(comp.data('datepicker'), 'append component initialized by "focus" event on input'); + comp.remove(); + + comp = $(html).appendTo('#qunit-fixture'); + comp.find('input').click(); + ok(comp.data('datepicker'), 'append component initialized by "click" event on input'); + comp.remove(); + + comp = $(html).appendTo('#qunit-fixture'); + comp.find('.add-on').focus(); + ok(comp.data('datepicker'), 'append component initialized by "focus" event on add-on'); + comp.remove(); + + comp = $(html).appendTo('#qunit-fixture'); + comp.find('.add-on').click(); + ok(comp.data('datepicker'), 'append component initialized by "click" event on add-on'); + comp.remove(); + + + html = '
'+ + ''+ + '
'; + + comp = $(html).prependTo('#qunit-fixture'); + comp.find('input').focus(); + ok(comp.data('datepicker'), 'prepend component initialized by "focus" event on input'); + comp.remove(); + + comp = $(html).prependTo('#qunit-fixture'); + comp.find('input').click(); + ok(comp.data('datepicker'), 'prepend component initialized by "click" event on input'); + comp.remove(); + + comp = $(html).prependTo('#qunit-fixture'); + comp.find('.add-on').focus(); + ok(comp.data('datepicker'), 'prepend component initialized by "focus" event on add-on'); + comp.remove(); + + comp = $(html).prependTo('#qunit-fixture'); + comp.find('.add-on').click(); + ok(comp.data('datepicker'), 'prepend component initialized by "click" event on add-on'); + comp.remove(); +}); + +test('DATA-API: data-provide="datepicker" on button', function(){ + var html, comp; + + html = '