UNPKG

wix-style-react

Version:
87 lines (76 loc) 2.74 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _testUtils = require('react-dom/test-utils'); var _testUtils2 = _interopRequireDefault(_testUtils); var _toArray = require('lodash/toArray'); var _toArray2 = _interopRequireDefault(_toArray); var _utils = require('../../test/utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var radioGroupDriverFactory = function radioGroupDriverFactory(_ref) { var element = _ref.element; var radios = (0, _toArray2.default)(element.children) || []; var radioButtons = radios.map(function (radio) { return radio.childNodes[0]; }); var labels = radios.map(function (radio) { return radio.childNodes[1]; }); var selectedRadio = function selectedRadio() { return radios.find(function (radio) { return radio.childNodes[0].checked; }); }; var getRadioByValue = function getRadioByValue(value) { return radioButtons.find(function (radioButton) { return radioButton.value === value.toString(); }); }; return { exists: function exists() { return !!element; }, selectByValue: function selectByValue(value) { return _testUtils2.default.Simulate.change(getRadioByValue(value)); }, selectByIndex: function selectByIndex(index) { return _testUtils2.default.Simulate.change(radioButtons[index]); }, getRadioValueAt: function getRadioValueAt(index) { return radioButtons[index].value; }, getRadioAtIndex: function getRadioAtIndex(index) { return radios[index]; }, getSelectedValue: function getSelectedValue() { return selectedRadio() ? selectedRadio().childNodes[0].value : null; }, isRadioDisabled: function isRadioDisabled(index) { return radioButtons[index].disabled; }, // TODO: We should deprecate getClassOfLabelAt(). Css tests should be in e2e tests. getClassOfLabelAt: function getClassOfLabelAt(index) { return labels[index].className; }, isVerticalDisplay: function isVerticalDisplay() { return (0, _utils.isClassExists)(element, 'vertical'); }, isHorizontalDisplay: function isHorizontalDisplay() { return (0, _utils.isClassExists)(element, 'horizontal'); }, isButtonType: function isButtonType() { return (0, _utils.isClassExists)(element, 'buttonType'); }, spacing: function spacing() { return radios[1].style._values['margin-top']; }, lineHeight: function lineHeight() { return labels[0].style._values['line-height']; }, getNumberOfRadios: function getNumberOfRadios() { return radios.length; } }; }; exports.default = radioGroupDriverFactory;