wix-style-react
Version:
84 lines (75 loc) • 2.99 kB
JavaScript
import { baseUniDriverFactory } from 'wix-ui-test-utils/base-driver';
import { tooltipDriverFactory } from '../Tooltip/Tooltip.uni.driver';
import { dataHooks } from './constants';
import deprecationLog from '../utils/deprecationLog';
export const sliderUniDriverFactory = (base, body) => {
const $sliderHandles = () =>
base.$$(`[data-hook="${dataHooks.sliderHandle}"]`);
const $sliderDots = () => base.$$('.wsr-slider-dot');
const $sliderMarks = () =>
base.$$(`[data-hook="${dataHooks.sliderMarkLabel}"]`);
const getTooltipDriver = async index => {
const sliderDataHook = await base.attr('data-hook');
const tooltipDataHook = sliderDataHook
? `${sliderDataHook}-${dataHooks.sliderTooltip}-${index}`
: `${dataHooks.sliderTooltip}-${index}`;
return tooltipDriverFactory(
base.$(`[data-hook="${tooltipDataHook}"]`),
body,
);
};
let currentHandleIndex = 0;
return {
...baseUniDriverFactory(base),
/** returns true if slider grade is selected */
isDotSelected: number =>
$sliderDots()
.get(number - 1)
.hasClass('wsr-slider-dot-active'),
/** returns number of slider grades */
numOfSliderDots: () => $sliderDots().count(),
/** returns number of slider handles */
numOfSliderHandles: () => $sliderHandles().count(),
/** returns number of slider marks labels */
numOfSliderMarksLabels: () => $sliderMarks().count(),
/** returns slider tooltip value */
getToolTipValue: async ({ handleIndex } = {}) => {
if (!handleIndex) {
deprecationLog(
'handleIndex is not provided, in next major release this will be required',
);
}
const index = handleIndex || currentHandleIndex;
const tooltipDriver = await getTooltipDriver(index);
let text = null;
try {
text = await tooltipDriver.getTooltipText();
} catch {}
return text;
},
/** hovers on slider handle */
hoverHandle: async ({ handleIndex }) => {
deprecationLog(
'hoverHandle is deprecated and will be removed in next major release, please use getToolTipValue directly with handleIndex',
);
currentHandleIndex = handleIndex;
const tooltipDriver = await getTooltipDriver(handleIndex);
return tooltipDriver.mouseEnter();
},
/** mouse leaves slider handle */
unHoverHandle: async ({ handleIndex }) => {
deprecationLog(
'unHoverHandle is deprecated and will be removed in next major release, please use getToolTipValue directly with handleIndex',
);
currentHandleIndex = 0;
const tooltipDriver = await getTooltipDriver(handleIndex);
return tooltipDriver.mouseLeave();
},
/** returns if the slider is disabled */
isDisabled: async () => {
return !!(await base.$('.wsr-slider-disabled'));
},
/** returns direction either horizontal or vertical */
getDirection: async () => base.attr('data-direction'),
};
};