UNPKG

wix-style-react

Version:
106 lines (102 loc) 4.02 kB
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;