UNPKG

wix-style-react

Version:
236 lines (220 loc) • 9.29 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _testUtils = require('react-dom/test-utils'); var _testUtils2 = _interopRequireDefault(_testUtils); var _DropdownLayout = require('../DropdownLayout/DropdownLayout.driver'); var _DropdownLayout2 = _interopRequireDefault(_DropdownLayout); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var calendarDriverFactory = function calendarDriverFactory(_ref) { var element = _ref.element; var getCalendar = function getCalendar() { return element.querySelector('.DayPicker'); }; var getNthDay = function getNthDay(n) { return element.querySelectorAll('[role="gridcell"]:not([class*="outside"]):not([class*="disabled"])')[n]; }; var getNthDayOfTheMonth = function getNthDayOfTheMonth(n) { return element.querySelectorAll('[role="gridcell"]:not([class*="outside"])')[n]; }; var getDayOfDate = function getDayOfDate(year, month, day) { return element.querySelector('[role="gridcell"]:not([class*="outside"])>[data-date=\'' + year + '-' + month + '-' + day + '\']'); }; var _getSelectedDay = function _getSelectedDay() { return element.querySelector('[role="gridcell"][aria-selected=true]:not(.DayPicker-Day--outside)'); }; var getYearDropdown = function getYearDropdown() { return element.querySelector('[data-hook="datepicker-year-dropdown-button"]'); }; var getMonthDropdownButton = function getMonthDropdownButton() { return element.querySelector('[data-hook="datepicker-month-dropdown-button"]'); }; var getNthYear = function getNthYear(n) { return element.querySelector('[data-hook="dropdown-item-' + n + '"]'); }; var _getMonthCaption = function _getMonthCaption() { return element.querySelector('[data-hook="datepicker-month-caption"]'); }; var getYearCaption = function getYearCaption() { return element.querySelector('[data-hook="datepicker-year-caption"]'); }; var getMonthAndYear = function getMonthAndYear() { return [_getMonthCaption(), getYearCaption()]; }; var _getNthWeekDayName = function _getNthWeekDayName(n) { return element.querySelectorAll('[class="DayPicker-Weekday"] abbr')[n]; }; var getPrevMonthButton = function getPrevMonthButton() { return element.querySelector('[data-hook="datepicker-left-arrow"]'); }; var getNextMonthButton = function getNextMonthButton() { return element.querySelector('[data-hook="datepicker-right-arrow"]'); }; var _getFocusedDay = function _getFocusedDay() { return element.querySelector('.DayPicker-Day:focus'); }; var getVisuallyUnfocusedDay = function getVisuallyUnfocusedDay() { return element.querySelector('.DayPicker-Day--unfocused'); }; var getMonthContainers = function getMonthContainers() { return element.querySelectorAll('.DayPicker-Month'); }; var getVisibleMonths = function getVisibleMonths() { return element.querySelectorAll('[class="DayPicker-Month"]'); }; var _getSelectedDays = function _getSelectedDays() { return element.querySelectorAll('[role="gridcell"][aria-selected=true]:not(.DayPicker-Day--outside)'); }; var driver = { exists: function exists() { return !!element; }, close: function close() { return _testUtils2.default.Simulate.keyDown(_getFocusedDay(), { key: 'Escape', keyCode: 27 }); }, isVisible: function isVisible() { return !!getCalendar(); }, getCurrentMonthWithYear: function getCurrentMonthWithYear() { return getMonthAndYear() ? getMonthAndYear().map(function (elm) { return elm.textContent; }).join(' ') : ''; }, getNthWeekDayName: function getNthWeekDayName() { var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return _getNthWeekDayName(n) ? _getNthWeekDayName(n).textContent : ''; }, clickOnNthDay: function clickOnNthDay() { var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return getNthDay(n) && _testUtils2.default.Simulate.click(getNthDay(n)); }, clickDay: function clickDay(date) { var day = getDayOfDate(date.getFullYear(), date.getMonth(), date.getDate()); if (day) { _testUtils2.default.Simulate.click(day); } else { throw new Error('ERROR: CalendarDriver.clickDay() - The given date (' + date.toString() + ') is not visible'); } }, clickOnNthDayOfTheMonth: function clickOnNthDayOfTheMonth() { var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return getNthDayOfTheMonth(n) && _testUtils2.default.Simulate.click(getNthDayOfTheMonth(n)); }, clickOnSelectedDay: function clickOnSelectedDay() { return _testUtils2.default.Simulate.click(_getSelectedDay()); }, clickOnYearDropdown: function clickOnYearDropdown() { return _testUtils2.default.Simulate.click(getYearDropdown()); }, clickOnMonthDropdown: function clickOnMonthDropdown() { return _testUtils2.default.Simulate.click(getMonthDropdownButton()); }, clickOnNthYear: function clickOnNthYear() { var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; return _testUtils2.default.Simulate.mouseDown(getNthYear(n)); }, clickOnPrevMonthButton: function clickOnPrevMonthButton() { return _testUtils2.default.Simulate.click(getPrevMonthButton()); }, clickOnNextMonthButton: function clickOnNextMonthButton() { return _testUtils2.default.Simulate.click(getNextMonthButton()); }, isHeaderVisible: function isHeaderVisible() { return !!element.querySelector('[data-hook="datepicker-head"]'); }, isYearDropdownExists: function isYearDropdownExists() { return !!element.querySelector('[data-hook="datepicker-year-dropdown"]'); }, isYearCaptionExists: function isYearCaptionExists() { return !!getYearCaption(); }, isMonthDropdownExists: function isMonthDropdownExists() { return !!element.querySelector('[data-hook="datepicker-month-dropdown"]'); }, isMonthCaptionExists: function isMonthCaptionExists() { return !!_getMonthCaption(); }, getMonthCaption: function getMonthCaption() { return _getMonthCaption().textContent; }, getMonthDropdownLabel: function getMonthDropdownLabel() { return getMonthDropdownButton().textContent; }, getSelectedYear: function getSelectedYear() { return getYearDropdown().textContent; }, getFocusedDay: function getFocusedDay() { return _getFocusedDay().textContent; }, getFocusedDayElement: function getFocusedDayElement() { return _getFocusedDay(); }, pressLeftArrow: function pressLeftArrow() { return _testUtils2.default.Simulate.keyDown(_getFocusedDay(), { key: 'ArrowLeft', keyCode: 37 }); }, pressRightArrow: function pressRightArrow() { return _testUtils2.default.Simulate.keyDown(_getFocusedDay(), { key: 'ArrowRight', keyCode: 39 }); }, getSelectedDay: function getSelectedDay() { return _getSelectedDay().textContent; }, getWidth: function getWidth() { return element.style.width; }, triggerKeyDown: function triggerKeyDown(params) { return _testUtils2.default.Simulate.keyDown(_getFocusedDay(), params); }, isFocusedDayVisuallyUnfocused: function isFocusedDayVisuallyUnfocused() { return _getFocusedDay().classList.contains('DayPicker-Day--unfocused'); }, containsVisuallyUnfocusedDay: function containsVisuallyUnfocusedDay() { return !!getVisuallyUnfocusedDay(); }, isTwoMonthsLayout: function isTwoMonthsLayout() { return getMonthContainers().length === 2; }, getMonthDropdownDriver: function getMonthDropdownDriver() { _testUtils2.default.Simulate.click(element.querySelector('[data-hook="datepicker-month-dropdown-button"]')); return (0, _DropdownLayout2.default)({ element: element.querySelector('[data-hook="datepicker-month-dropdown-menu"]') }); }, getYearDropdownDriver: function getYearDropdownDriver() { _testUtils2.default.Simulate.click(element.querySelector('[data-hook="datepicker-year-dropdown-button"]')); return (0, _DropdownLayout2.default)({ element: element.querySelector('[data-hook="datepicker-year-dropdown-menu"]') }); }, getNumOfVisibleMonths: function getNumOfVisibleMonths() { return getVisibleMonths().length; }, getNumOfSelectedDays: function getNumOfSelectedDays() { return _getSelectedDays().length; }, getSelectedDays: function getSelectedDays() { var result = []; _getSelectedDays().forEach(function (item) { var date = item.childNodes[0].getAttribute('data-date').split('-').map(function (item) { return parseInt(item); }); result.push(new Date(date[0], date[1], date[2])); }); return result; }, mouseClickOutside: function mouseClickOutside() { return document.body.dispatchEvent(new Event('mouseup', { cancelable: true })); } }; return driver; }; exports.default = calendarDriverFactory;