wix-style-react
Version:
wix-style-react
106 lines (102 loc) • 4.02 kB
JavaScript
import ReactTestUtils from 'react-dom/test-utils';
import navigationStyles from './navigation/styles.scss';
var sideMenuDriverFactory = function sideMenuDriverFactory(_ref) {
var element = _ref.element;
var getHeader = function getHeader() {
return element.querySelector('[data-hook=menu-header]');
};
var getNavigation = function getNavigation() {
return element.querySelector('[data-hook=menu-navigation]');
};
var getNavigationLinks = function getNavigationLinks() {
return element.querySelectorAll('[data-hook=menu-navigation-link]');
};
var getNavigationLinkWrappers = function getNavigationLinkWrappers() {
return element.querySelectorAll('[data-hook=menu-navigation-link-wrapper]');
};
var getNavigationSeparators = function getNavigationSeparators() {
return element.querySelectorAll('[data-hook=menu-navigation-separator]');
};
var getNavigationCategories = function getNavigationCategories() {
return element.querySelectorAll('[data-hook=menu-navigation-category]');
};
var getNavigationBackLink = function getNavigationBackLink() {
return element.querySelector('[data-hook=menu-navigation-back-link]');
};
var getPromotion = function getPromotion() {
return element.querySelector('[data-hook=menu-promotion]');
};
var getFooter = function getFooter() {
return element.querySelector('[data-hook=menu-footer]');
};
var getBadge = function getBadge(link) {
return link.querySelector('[data-hook=menu-navigation-badge]');
};
return {
exists: function exists() {
return !!element;
},
hasHeader: function hasHeader() {
return !!getHeader();
},
hasNavigation: function hasNavigation() {
return !!getNavigation();
},
hasPromotion: function hasPromotion() {
return !!getPromotion();
},
hasFooter: function hasFooter() {
return !!getFooter();
},
hasBackLink: function hasBackLink() {
return !!getNavigationBackLink();
},
headerContent: function headerContent() {
return getHeader().textContent;
},
navigationLinks: function navigationLinks() {
return getNavigationLinks();
},
navigationInnerLinks: function navigationInnerLinks() {
return getNavigationLinkWrappers();
},
isLinkActiveByIndex: function isLinkActiveByIndex(index) {
var activeLinkWrapper = getNavigationLinkWrappers()[index];
var classExists = activeLinkWrapper.classList.contains(navigationStyles.linkActive);
var dataAttributeExists = activeLinkWrapper.getAttribute('data-link-active') === 'true';
return classExists && dataAttributeExists;
},
isLinkDisabledByIndex: function isLinkDisabledByIndex(index) {
return getNavigationLinkWrappers()[index].classList.contains(navigationStyles.linkDisabled);
},
isLinkBadgeVisibleByIndex: function isLinkBadgeVisibleByIndex(index) {
return !!getBadge(getNavigationLinkWrappers()[index]);
},
navigationSeparators: function navigationSeparators() {
return getNavigationSeparators();
},
navigationCategories: function navigationCategories() {
return getNavigationCategories();
},
navigationCategoryContent: function navigationCategoryContent(index) {
return getNavigationCategories()[index].textContent;
},
clickLinkByIndex: function clickLinkByIndex(index) {
return ReactTestUtils.Simulate.click(getNavigationLinks()[index]);
},
clickInnerLinkByIndex: function clickInnerLinkByIndex(index) {
var innerLink = getNavigationLinkWrappers()[index].querySelector('a');
ReactTestUtils.Simulate.click(innerLink);
},
clickBackLink: function clickBackLink() {
return ReactTestUtils.Simulate.click(getNavigationBackLink());
},
promotionContent: function promotionContent() {
return getPromotion().textContent;
},
footerContent: function footerContent() {
return getFooter().textContent;
}
};
};
export default sideMenuDriverFactory;