UNPKG

wix-style-react

Version:
198 lines (163 loc) • 5.39 kB
import React from 'react'; import { createRendererWithUniDriver, cleanup } from '../../../test/utils/unit'; import SidePanel from '../SidePanel'; import { sidePanelPrivateDriverFactory } from './SidePanel.private.uni.driver'; describe('SidePanel', () => { const render = createRendererWithUniDriver(sidePanelPrivateDriverFactory); afterEach(() => { cleanup(); }); it('should render', async () => { const { driver } = render(<SidePanel />); expect(await driver.exists()).toBe(true); }); it('should pass the class name', async () => { const expectedClassName = 'some-selector'; const { driver } = render(<SidePanel className={expectedClassName} />); expect(await driver.hasClass(expectedClassName)).toBe(true); }); describe('SidePanel.Content', () => { it('should have content', async () => { const content = 'Any Content'; const { driver } = render( <SidePanel> <SidePanel.Content>{content}</SidePanel.Content> </SidePanel>, ); expect(await driver.content.exists()).toBe(true); }); }); describe('SidePanel.Header', () => { it('should have header', async () => { const { driver } = render( <SidePanel> <SidePanel.Header /> </SidePanel>, ); expect(await driver.header.exists()).toBe(true); }); it('should have string title', async () => { const title = 'some text'; const { driver } = render( <SidePanel> <SidePanel.Header title={title} /> </SidePanel>, ); expect(await driver.getTitleText()).toBe(title); }); it('should have string title with infoTooltipContent ', async () => { const infoTooltipContent = 'infoTooltipContent'; const { driver } = render( <SidePanel> <SidePanel.Header title={'title'} infoTooltipContent={infoTooltipContent} /> </SidePanel>, ); expect(await driver.getTooltipContent()).toBe(infoTooltipContent); }); it('should have custom node title', async () => { const title = 'some text'; const { driver } = render( <SidePanel> <SidePanel.Header title={<div data-hook={'custom-node'}>{title}</div>} /> </SidePanel>, ); expect(await driver.header.getCustomNodeText()).toBe(title); }); it('should show divider by default', async () => { const title = 'some text'; const { driver } = render( <SidePanel> <SidePanel.Header title={title} /> </SidePanel>, ); expect(await driver.isHeaderDividerExists()).toBe(true); }); it('should show divider', async () => { const title = 'some text'; const { driver } = render( <SidePanel> <SidePanel.Header title={title} showDivider /> </SidePanel>, ); expect(await driver.isHeaderDividerExists()).toBe(true); }); it('should not show divider', async () => { const title = 'some text'; const { driver } = render( <SidePanel> <SidePanel.Header title={title} showDivider={false} /> </SidePanel>, ); expect(await driver.isHeaderDividerExists()).toBe(false); }); it('should have close button', async () => { const { driver } = render( <SidePanel> <SidePanel.Header /> </SidePanel>, ); expect(await driver.isCloseButtonExists()).toBe(true); }); it('should call onCloseButtonClick when close button clicked', async () => { const onCloseButtonClick = jest.fn(); const { driver } = render( <SidePanel onCloseButtonClick={onCloseButtonClick}> <SidePanel.Header /> </SidePanel>, ); await driver.clickClose(); expect(onCloseButtonClick).toHaveBeenCalled(); }); it('should have children', async () => { const title = 'some text'; const { driver } = render( <SidePanel> <SidePanel.Header> <div data-hook={'custom-node'}>{title}</div> </SidePanel.Header> </SidePanel>, ); expect(await driver.header.getCustomNodeText()).toBe(title); }); }); describe('SidePanel.Footer', () => { it('should have footer', async () => { const content = 'Any Content'; const { driver } = render( <SidePanel> <SidePanel.Footer>{content}</SidePanel.Footer> </SidePanel>, ); expect(await driver.footer.exists()).toBe(true); }); it('should show divider by default', async () => { const { driver } = render( <SidePanel> <SidePanel.Footer></SidePanel.Footer> </SidePanel>, ); expect(await driver.isFooterDividerExists()).toBe(true); }); it('should show divider', async () => { const { driver } = render( <SidePanel> <SidePanel.Footer showDivider></SidePanel.Footer> </SidePanel>, ); expect(await driver.isFooterDividerExists()).toBe(true); }); it('should not show divider', async () => { const { driver } = render( <SidePanel> <SidePanel.Footer showDivider={false}></SidePanel.Footer> </SidePanel>, ); expect(await driver.isFooterDividerExists()).toBe(false); }); }); });