function selectDateInDatePicker(newDate) { var date = DateFormatting.parse(newDate, DateFieldInput.DATE_FORMAT); var selectorForDate = '.pika-day' + '[data-pika-year="' + date.getFullYear() + '"]' + '[data-pika-month="' + date.getMonth() + '"]' + '[data-pika-day="' + date.getDate() + '"]'; var correspondingDate = datePicker.querySelector(selectorForDate); correspondingDate.dispatchEvent(new Event('mousedown')); }
function getDatePickerSelectedDate() { var selectedDate = datePicker.querySelector('.is-selected .pika-day'); assert(selectedDate, 'getDatePickerSelectedDate() expects a selected date in the date picker'); var year = selectedDate.getAttribute('data-pika-year'); var month = selectedDate.getAttribute('data-pika-month'); var day = selectedDate.getAttribute('data-pika-day'); return DateFormatting.format(new Date(year, month, day), DateFieldInput.DATE_FORMAT); }
assert.throws(function runWithoutTheSecondArgument() { DateFormatting.parse('2015-06-07'); },
assert.throws(function runWithEmptyStringAsFirstArgument() { DateFormatting.parse(''); },
assert.throws(function runWithoutTheFirstArgument() { DateFormatting.parse(); },
before(function() { date = DateFormatting.parse('2015-06-07', 'YYYY-MM-DD'); });
assert.throws(function runWithoutTheSecondArgument() { DateFormatting.format(date); },
before(function() { date = new Date(2015, 10, 7); formattedDate = DateFormatting.format(date, 'DD/MM/YYYY'); });
it('works', function(done) { assert.equal(datePickerButton.title, 'Deschide calendarul', 'has the appropriate tool-tip'); var datePicker = getDatePicker(); assert.isNull(datePicker, 'date picker is not there before clicking the button'); datePickerButton.click(); assert.isNotTrue(bodyClickListener.executed, 'clicks do not propagate to <body>, and don’t hide the picker'); datePicker = getDatePicker(); assert.isTrue(datePicker.classList.contains('xo'), 'has the “xo” theme'); var firstMonth = datePicker.querySelector('.pika-select-month option'); assert.equal(firstMonth.textContent, 'Ianuarie', 'month names are translated'); var firstWeekDay = datePicker.querySelector('.pika-table th abbr'); assert.equal(firstWeekDay.title, 'Luni', 'first day of the wiik is Monday'); assert.equal(firstWeekDay.textContent, 'Lu', 'short week day names are translated'); var prevMonthButton = datePicker.querySelector('button.pika-prev'); assert.equal(prevMonthButton.textContent, 'luna precedentă', 'the button to go to previous month is translated'); var nextMonthButton = datePicker.querySelector('button.pika-next'); assert.equal(nextMonthButton.textContent, 'luna următoare', 'the button to go to next month is translated'); assert.equal(getDatePickerSelectedDate(), domElement.value, 'when opened, date picker reflects input’s value'); var newDate = nextDay(domElement.value); selectDateInDatePicker(newDate); assert.equal(getDatePickerSelectedDate(), newDate, 'when selected, it updates input value accordingly'); assert.equal(dateFieldInput.getValue(), newDate, 'when selected, getValue() returns the new value'); datePicker = getDatePicker(); assert.isNull(datePicker, 'hides the date picker when a date is selected'); domElement.value = ''; datePickerButton.click(); datePicker = getDatePicker(); assert.isNotNull(datePicker, 'date picker is displayed with en empty field value'); var todayDate = DateFormatting.format(new Date(), DateFieldInput.DATE_FORMAT); assert.equal(getDatePickerSelectedDate(), todayDate, 'when opening the date picker with an empty field, it has today marked'); datePickerButton.click(); datePicker = getDatePicker(); assert.isNull(datePicker, 'hides the date picker when clicked again'); /* this setTimeout call is required because focus() is called async too */ window.setTimeout(function() { assert.equal(document.activeElement, domElement, 'when the date picker is closed, the input get focus again'); datePickerButton.click(); document.body.click(); datePicker = getDatePicker(); assert.isNull(datePicker, 'hides the date picker when clicking outside'); datePickerButton.click(); simulateEscapeKey(); datePicker = getDatePicker(); assert.isNull(datePicker, 'hides the date picker when pressing Escape key'); done(); }); function getDatePicker() { return sandbox.querySelector(DateFieldInput.DATE_PICKER_SELECTOR); } function getDatePickerSelectedDate() { var selectedDate = datePicker.querySelector('.is-selected .pika-day'); assert(selectedDate, 'getDatePickerSelectedDate() expects a selected date in the date picker'); var year = selectedDate.getAttribute('data-pika-year'); var month = selectedDate.getAttribute('data-pika-month'); var day = selectedDate.getAttribute('data-pika-day'); return DateFormatting.format(new Date(year, month, day), DateFieldInput.DATE_FORMAT); } function nextDay(initialFormattedDate) { var initialDate = DateFormatting.parse(initialFormattedDate, DateFieldInput.DATE_FORMAT); var nextDate = new Date(initialDate.getFullYear(), initialDate.getMonth(), initialDate.getDate() + 1); return DateFormatting.format(nextDate, DateFieldInput.DATE_FORMAT); } function selectDateInDatePicker(newDate) { var date = DateFormatting.parse(newDate, DateFieldInput.DATE_FORMAT); var selectorForDate = '.pika-day' + '[data-pika-year="' + date.getFullYear() + '"]' + '[data-pika-month="' + date.getMonth() + '"]' + '[data-pika-day="' + date.getDate() + '"]'; var correspondingDate = datePicker.querySelector(selectorForDate); correspondingDate.dispatchEvent(new Event('mousedown')); } });
function nextDay(initialFormattedDate) { var initialDate = DateFormatting.parse(initialFormattedDate, DateFieldInput.DATE_FORMAT); var nextDate = new Date(initialDate.getFullYear(), initialDate.getMonth(), initialDate.getDate() + 1); return DateFormatting.format(nextDate, DateFieldInput.DATE_FORMAT); }