wix-style-react
Version:
67 lines (52 loc) • 1.94 kB
JavaScript
import ReactTestUtils from 'react-dom/test-utils';
import textDriverFactory from '../Text/Text.driver';
import { tooltipDriverFactory } from 'wix-ui-core/dist/src/components/tooltip/Tooltip.driver';
import { dataHooks } from './constants';
const addItemDriverFactory = ({ element, eventTrigger }) => {
const byHook = hook => element.querySelector(`[data-hook*="${hook}"]`);
const tooltipTestkit = tooltipDriverFactory({
element,
eventTrigger,
});
const textDriver = () =>
textDriverFactory({ element: byHook(dataHooks.itemText) });
const subtitleTextDriver = () =>
textDriverFactory({ element: byHook(dataHooks.itemSubtitle) });
const baseElement = element.querySelector(
`[data-hook="${dataHooks.addItem}"]`,
);
return {
/** returns true if element in the DOM */
exists: () => !!baseElement,
/** returns the driver element */
element: () => baseElement,
/** returns value of action text */
getText: () => textDriver().getText(),
/** true if passed children in string exists */
textExists: () => textDriver().exists(),
/** returns value of tooltip content */
getTooltipContent: () => {
tooltipTestkit.mouseEnter();
const text = tooltipTestkit.getContentElement().textContent;
tooltipTestkit.mouseLeave();
return text;
},
/** clicks on element */
click: () => eventTrigger.click(baseElement),
/** returns value of subtitle */
getSubtitle: () => subtitleTextDriver().getText(),
/** returns true if element is focused */
isFocused: () => document.activeElement === baseElement,
/** sets focus on the element */
focus: () => {
baseElement.focus();
ReactTestUtils.Simulate.focus(baseElement);
},
/** removes focus on the element */
blur: () => {
baseElement.blur();
ReactTestUtils.Simulate.blur(baseElement);
},
};
};
export default addItemDriverFactory;