import { render, screen } from '@testing-library/react'; import { Compass } from '../Compass'; import styles from '@patternfly/react-styles/css/components/Compass/compass'; test('Renders without children', () => { render(
); expect(screen.getByTestId('test-compass').firstChild).toBeVisible(); }); test('Renders with custom class name when className prop is provided', () => { render(); expect(screen.getByTestId('compass')).toHaveClass('custom-class'); }); test('Renders with default compass class', () => { render(); expect(screen.getByTestId('compass')).toHaveClass(styles.compass); }); test('Renders header content when provided', () => { render(Header content} />); expect(screen.getByText('Header content')).toBeVisible(); }); test('Renders sidebar start content when provided', () => { render(Sidebar start} />); expect(screen.getByText('Sidebar start')).toBeVisible(); }); test('Renders main content when provided', () => { render(Main content} />); expect(screen.getByText('Main content')).toBeVisible(); }); test('Renders sidebar end content when provided', () => { render(Sidebar end} />); expect(screen.getByText('Sidebar end')).toBeVisible(); }); test('Renders footer content when provided', () => { render(Footer content} />); expect(screen.getByText('Footer content')).toBeVisible(); }); test('Renders header with expanded class when isHeaderExpanded is true', () => { render(Header} isHeaderExpanded />); expect(screen.getByText('Header').parentElement).toHaveClass('pf-m-expanded'); }); test('Renders header without expanded class and with inert when isHeaderExpanded is false', () => { render(Header} isHeaderExpanded={false} />); const headerElement = screen.getByText('Header').parentElement; expect(headerElement).not.toHaveClass('pf-m-expanded'); expect(headerElement).toHaveAttribute('inert'); }); test('Renders sidebar start with expanded class when isSidebarStartExpanded is true', () => { render(Sidebar start} isSidebarStartExpanded />); expect(screen.getByText('Sidebar start').parentElement).toHaveClass('pf-m-expanded'); }); test('Renders sidebar start without expanded class and with inert when isSidebarStartExpanded is false', () => { render(Sidebar start} isSidebarStartExpanded={false} />); const sidebarElement = screen.getByText('Sidebar start').parentElement; expect(sidebarElement).not.toHaveClass('pf-m-expanded'); expect(sidebarElement).toHaveAttribute('inert'); }); test('Renders sidebar end with expanded class when isSidebarEndExpanded is true', () => { render(Sidebar end} isSidebarEndExpanded />); expect(screen.getByText('Sidebar end').parentElement).toHaveClass('pf-m-expanded'); }); test('Renders sidebar end without expanded class and with inert when isSidebarEndExpanded is false', () => { render(Sidebar end} isSidebarEndExpanded={false} />); const sidebarElement = screen.getByText('Sidebar end').parentElement; expect(sidebarElement).not.toHaveClass('pf-m-expanded'); expect(sidebarElement).toHaveAttribute('inert'); }); test('Renders footer with expanded class when isFooterExpanded is true', () => { render(Footer} isFooterExpanded />); expect(screen.getByText('Footer').parentElement).toHaveClass('pf-m-expanded'); }); test('Renders footer without expanded class and with inert when isFooterExpanded is false', () => { render(Footer} isFooterExpanded={false} />); const footerElement = screen.getByText('Footer').parentElement; expect(footerElement).not.toHaveClass('pf-m-expanded'); expect(footerElement).toHaveAttribute('inert'); }); test('Renders with drawer when drawerContent is provided', () => { render(Drawer content} />); expect(screen.getByText('Drawer content')).toBeVisible(); }); test('Renders with additional props spread to the component', () => { render(); expect(screen.getByTestId('compass')).toHaveAccessibleName('Test label'); }); test('Renders with default expansion states', () => { render( Header} sidebarStart={
Sidebar start
} sidebarEnd={
Sidebar end
} footer={
Footer
} > Test
); expect(screen.getByText('Header').parentElement).toHaveClass('pf-m-expanded'); expect(screen.getByText('Sidebar start').parentElement).toHaveClass('pf-m-expanded'); expect(screen.getByText('Sidebar end').parentElement).toHaveClass('pf-m-expanded'); expect(screen.getByText('Footer').parentElement).toHaveClass('pf-m-expanded'); }); test('Matches the snapshot with basic layout', () => { const { asFragment } = render( Header} sidebarStart={
Sidebar start
} main={
Main content
} sidebarEnd={
Sidebar end
} footer={
Footer
} /> ); expect(asFragment()).toMatchSnapshot(); }); test('Matches the snapshot with drawer', () => { const { asFragment } = render( Drawer content} drawerProps={{ isExpanded: true }} header={
Header
} sidebarStart={
Sidebar start
} main={
Main content
} sidebarEnd={
Sidebar end
} footer={
Footer
} /> ); expect(asFragment()).toMatchSnapshot(); }); test(`Renders with ${styles.modifiers.docked} class when dock is passed`, () => { render(Dock content} data-testid="compass" />); expect(screen.getByTestId('compass')).toHaveClass(styles.modifiers.docked); }); test(`Does not render with ${styles.modifiers.docked} class when dock is not passed`, () => { render(); expect(screen.getByTestId('compass')).not.toHaveClass(styles.modifiers.docked); }); test('Does not render masthead content when dock is not passed', () => { render(); expect(screen.queryByText('Masthead content')).not.toBeInTheDocument(); }); test('Renders masthead content when dock is passed', () => { render(Masthead content} dock={
Dock content
} />); expect(screen.getByText('Masthead content')).toBeVisible(); }); test(`Renders dock with ${styles.modifiers.expanded} class when isDockExpanded is true`, () => { render(); expect(screen.getByText('Dock content')).toHaveClass(styles.modifiers.expanded); }); test(`Renders dock without ${styles.modifiers.expanded} class when isDockExpanded is false`, () => { render(); expect(screen.getByText('Dock content')).not.toHaveClass(styles.modifiers.expanded); }); test(`Renders dock with ${styles.modifiers.textExpanded} class when isDockTextExpanded is true`, () => { render(); expect(screen.getByText('Dock content')).toHaveClass(styles.modifiers.textExpanded); }); test(`Renders dock without ${styles.modifiers.textExpanded} class when isDockTextExpanded is false`, () => { render(); expect(screen.getByText('Dock content')).not.toHaveClass(styles.modifiers.textExpanded); });