wix-style-react
Version:
96 lines (87 loc) • 3.27 kB
JavaScript
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
import selectorDriverFactory from '../Selector/Selector.driver';
import editableRowDriverFactory from './EditableRow/EditableRow.driver';
import ReactTestUtils from 'react-dom/test-utils';
var editableSelectorDriverFactory = function editableSelectorDriverFactory(_ref) {
var element = _ref.element,
eventTrigger = _ref.eventTrigger;
var newRowButton = function newRowButton() {
return element.querySelector('[data-hook="new-row-button-text"]');
};
var selectorRowDriver = function selectorRowDriver(index) {
return selectorDriverFactory({
element: element.querySelectorAll('[data-hook="editable-selector-item"]')[index],
wrapper: element
});
};
var editButtonAt = function editButtonAt(index) {
return element.querySelectorAll('[data-hook="edit-item"]')[index];
};
var deleteButtonAt = function deleteButtonAt(index) {
return element.querySelectorAll('[data-hook="delete-item"]').item(index);
};
var editableRowDriver = function editableRowDriver() {
return editableRowDriverFactory({
element: element.querySelector('[data-hook="edit-row-wrapper"]'),
wrapper: element,
eventTrigger: eventTrigger
});
};
var isEditRowActive = function isEditRowActive() {
return !!element.querySelectorAll('[data-hook="edit-row-wrapper"]').length;
};
return {
items: function items() {
return _toConsumableArray(element.querySelectorAll('[data-hook="editable-selector-item"]')).map(function (selector) {
return selectorDriverFactory({
element: selector
});
});
},
exists: function exists() {
return !!element;
},
isEditing: function isEditing() {
return isEditRowActive();
},
isEditingRow: function isEditingRow() {
return !!(isEditRowActive() && editableRowDriver().getText());
},
isAddingRow: function isAddingRow() {
return !!(isEditRowActive() && !editableRowDriver().getText());
},
newRowButton: newRowButton,
deleteButtonAt: deleteButtonAt,
editButtonAt: editButtonAt,
addNewRow: function addNewRow(label) {
ReactTestUtils.Simulate.click(newRowButton());
editableRowDriver().setText(label);
},
editRow: function editRow(index, label) {
ReactTestUtils.Simulate.click(editButtonAt(index));
editableRowDriver().setText(label);
},
deleteRow: function deleteRow(index) {
ReactTestUtils.Simulate.click(deleteButtonAt(index));
},
startAdding: function startAdding() {
return ReactTestUtils.Simulate.click(newRowButton());
},
startEditing: function startEditing(index) {
return ReactTestUtils.Simulate.click(editButtonAt(index));
},
clickApprove: function clickApprove() {
return editableRowDriver().clickApprove();
},
clickCancel: function clickCancel() {
return editableRowDriver().clickCancel();
},
title: function title() {
return element.querySelector('[data-hook="editable-selector-title"] > span').textContent;
},
toggleItem: function toggleItem(index) {
return selectorRowDriver(index).toggle();
}
};
};
export default editableSelectorDriverFactory;