UNPKG

wix-style-react

Version:
188 lines (170 loc) • 6.39 kB
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;