UNPKG

wix-style-react

Version:
131 lines (108 loc) 3.63 kB
import React from 'react'; import CropRotate from 'wix-ui-icons-common/CropRotate'; import { cleanup, createRendererWithUniDriver, } from '../../../test/utils/react/index'; import { toggleButtonPrivateDriverFactory } from './ToggleButton.private.uni.driver'; import ToggleButton from '../index'; import { dataHooks } from './storySettings'; import { SKINS, iconChildSize } from '../constants'; describe('ToggleButton', () => { afterEach(() => cleanup()); const render = createRendererWithUniDriver(toggleButtonPrivateDriverFactory); describe('`skin` prop', () => { it.each(Object.values(SKINS))('should apply %s skin', async skin => { const props = { skin, labelValue: 'crop&rotate', children: <CropRotate />, }; const { driver } = render(<ToggleButton {...props} />); expect(await driver.getSkin()).toEqual(skin); }); }); describe('Icon size ', () => { const dataHook = dataHooks.iconOfToggleButton; it.each(Object.entries(iconChildSize))( 'should be %s when given size - %s', async (size, expected) => { const props = { size, labelValue: 'crop&rotate', children: <CropRotate data-hook={dataHook} />, }; const { driver } = render(<ToggleButton {...props} />); expect(await driver.getIconSize()).toEqual(expected); }, ); }); describe(`'selected' prop`, () => { it('should apply className when selected', async () => { const props = { selected: true, labelValue: 'crop&rotate', children: <CropRotate />, }; const { driver } = render(<ToggleButton {...props} />); expect(await driver.isButtonSelected()).toEqual(true); }); }); describe(`'disabled' prop`, () => { it('should be disabled', async () => { const props = { disabled: true, labelValue: 'crop&rotate', children: <CropRotate />, }; const { driver } = render(<ToggleButton {...props} />); expect(await driver.isButtonDisabled()).toEqual(true); }); }); describe('Label placement ', () => { const dataHook = dataHooks.iconOfToggleButton; it.each(['tooltip', 'end', 'bottom'])( 'should be %s', async labelPlacement => { const props = { labelPlacement, labelValue: 'crop&rotate', children: <CropRotate data-hook={dataHook} />, }; const { driver } = render(<ToggleButton {...props} />); expect(await driver.getLabelPlacement()).toEqual(labelPlacement); }, ); }); describe('tooltipProps', () => { it('`disabled` property should set disable tooltip', async () => { const props = { labelValue: 'crop&rotate', tooltipProps: { disabled: true }, children: <CropRotate />, }; const { driver } = render(<ToggleButton {...props} />); await driver.mouseEnter(); expect(await driver.tooltipExists()).toEqual(false); }); }); describe('Label value ', () => { const dataHook = dataHooks.iconOfToggleButton; it.each([ ['Tooltip label', 'tooltip'], ['End label', 'end'], ['Bottom label', 'bottom'], ])( 'should be "%s" when placement is "%s"', async (labelValue, labelPlacement) => { const props = { labelPlacement, labelValue, children: <CropRotate data-hook={dataHook} />, }; const { driver } = render(<ToggleButton {...props} />); expect(await driver.getLabelValue()).toEqual(labelValue); }, ); }); });