wix-style-react
Version:
wix-style-react
236 lines (220 loc) • 9.29 kB
JavaScript
;
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;