wix-style-react
Version:
188 lines (170 loc) • 6.39 kB
JavaScript
import addItemDriverFactory from '../AddItem/AddItem.driver';
import { tooltipTestkitFactory } from "wix-ui-core/dist/es/src/testkit";
import { dataAttributes, dataHooks } from './constants';
import { tooltipDriverFactory } from "wix-ui-core/dist/es/src/components/tooltip/Tooltip.driver";
var imageViewerDriverFactory = function imageViewerDriverFactory(_ref) {
var _element = _ref.element,
wrapper = _ref.wrapper,
eventTrigger = _ref.eventTrigger;
var byHook = function byHook(dataHook) {
return _element.querySelector("[data-hook=\"".concat(dataHook, "\"]"));
};
var hasDataAttribute = function hasDataAttribute(dataAttr, el) {
return el.getAttribute(dataAttr) === 'true';
};
var addItemDriver = function addItemDriver() {
return addItemDriverFactory({
element: byHook(dataHooks.addItem),
eventTrigger: eventTrigger
});
};
var tooltipTestkit = function tooltipTestkit(dataHook) {
return tooltipTestkitFactory({
wrapper: _element,
dataHook: dataHook
});
};
var getImageElement = function getImageElement() {
return byHook(dataHooks.image);
};
var getPreviousImageElement = function getPreviousImageElement() {
return byHook(dataHooks.previousImage);
};
var isImagesContainerElementVisible = function isImagesContainerElementVisible() {
return hasDataAttribute(dataAttributes.containerVisible, byHook(dataHooks.imagesContainer));
};
var isImageElementVisible = function isImageElementVisible(imgElement) {
return hasDataAttribute(dataAttributes.imageVisible, imgElement);
};
var hoverElement = function hoverElement() {
return eventTrigger.mouseOver(_element);
};
var showButtons = hoverElement;
return {
exists: function exists() {
return !!_element;
},
getElement: function getElement() {
return _element;
},
// for backward compatibility
element: function element() {
return _element;
},
// same as unidriver language
updateExists: function updateExists() {
return !!byHook(dataHooks.update);
},
updateButtonExists: function updateButtonExists() {
return !!byHook(dataHooks.update);
},
removeButtonExists: function removeButtonExists() {
return !!byHook(dataHooks.remove);
},
downloadButtonExists: function downloadButtonExists() {
return !!byHook(dataHooks.download);
},
moreButtonExists: function moreButtonExists() {
return !!byHook(dataHooks.more);
},
clickAdd: function clickAdd() {
return addItemDriver().click();
},
clickUpdate: function clickUpdate() {
showButtons();
eventTrigger.click(byHook(dataHooks.update));
},
clickDownload: function clickDownload() {
showButtons();
eventTrigger.click(byHook(dataHooks.download));
},
clickRemove: function clickRemove() {
showButtons();
eventTrigger.click(byHook(dataHooks.remove));
},
getContainerStyles: function getContainerStyles() {
return _element.getAttribute('style');
},
getAddTooltipContent: function getAddTooltipContent() {
return addItemDriver().getTooltipContent();
},
getUpdateTooltipContent: function getUpdateTooltipContent() {
var updateTooltip = tooltipTestkit(dataHooks.updateTooltip);
showButtons();
updateTooltip.mouseEnter();
return updateTooltip.getContentElement().textContent;
},
getDownloadTooltipContent: function getDownloadTooltipContent() {
var downloadTooltip = tooltipTestkit(dataHooks.downloadTooltip);
showButtons();
downloadTooltip.mouseEnter();
return downloadTooltip.getContentElement().textContent;
},
getRemoveTooltipContent: function getRemoveTooltipContent() {
var removeTooltip = tooltipTestkit(dataHooks.removeTooltip);
showButtons();
removeTooltip.mouseEnter();
return removeTooltip.getContentElement().textContent;
},
getMoreTooltipContent: function getMoreTooltipContent() {
var moreTooltip = tooltipTestkit(dataHooks.moreTooltip);
showButtons();
moreTooltip.mouseEnter();
return moreTooltip.getContentElement().textContent;
},
isDisabled: function isDisabled() {
return _element.getAttribute('data-disabled') === 'true';
},
isAddItemVisible: function isAddItemVisible() {
return !!byHook(dataHooks.addItem);
},
isLoaderVisible: function isLoaderVisible() {
return !!byHook(dataHooks.loader);
},
isImageLoaded: function isImageLoaded() {
return hasDataAttribute(dataAttributes.imageLoaded, _element);
},
isImageVisible: function isImageVisible() {
var image = getImageElement();
return !!image && isImageElementVisible(image) && isImagesContainerElementVisible();
},
isPreviousImageVisible: function isPreviousImageVisible() {
var previousImage = getPreviousImageElement();
return !!previousImage && isImageElementVisible(previousImage) && isImagesContainerElementVisible();
},
getImageUrl: function getImageUrl() {
var imageUrl = getImageElement();
return imageUrl && imageUrl.getAttribute('src');
},
getPreviousImageUrl: function getPreviousImageUrl() {
var previousImage = getPreviousImageElement();
return previousImage && previousImage.getAttribute('src');
},
hover: function hover() {
return hoverElement();
},
// Status
/** Return true if the given status is displayed */
hasStatus: function hasStatus(status) {
var statusEl = _element.querySelector("[data-hook='".concat(dataHooks.errorTooltip, "']"));
return (statusEl && statusEl.getAttribute('data-status')) === status;
},
/** If there's a status message, returns its text value */
getStatusMessage: function getStatusMessage() {
var tooltipText = null;
var tooltipDriver = tooltipDriverFactory({
element: _element.querySelector('[data-hook="status-indicator-tooltip"]'),
eventTrigger: eventTrigger
});
if (tooltipDriver.exists()) {
tooltipDriver.mouseEnter();
var contentElement = tooltipDriver.getContentElement();
if (contentElement) {
tooltipText = contentElement.textContent;
}
}
return tooltipText;
}
};
};
export default imageViewerDriverFactory;