wix-style-react
Version:
wix-style-react
87 lines (76 loc) • 2.74 kB
JavaScript
;
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;