UNPKG

@amsterdam/design-system-react

Version:

All React components from the Amsterdam Design System. Use it to compose pages in your website or application.

46 lines (45 loc) 2.39 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { LoginIcon } from '@amsterdam/design-system-react-icons'; import { render } from '@testing-library/react'; import { createRef } from 'react'; import { PageMenu } from './PageMenu'; import '@testing-library/jest-dom'; describe('Page menu', () => { it('renders a page menu with children', () => { const { container } = render(_jsxs(PageMenu, { children: [_jsx(PageMenu.Link, { href: "#", lang: "en", children: "English" }), _jsx(PageMenu.Link, { href: "#", icon: LoginIcon, children: "Mijn Amsterdam" })] })); const component = container.querySelector(':only-child'); const children = container.querySelectorAll('li'); const icons = container.querySelectorAll('svg'); expect(component).toBeInTheDocument(); expect(component).toBeVisible(); expect(children.length).toBe(2); expect(icons.length).toBe(1); }); it('renders a design system BEM class name', () => { const { container } = render(_jsx(PageMenu, {})); const component = container.querySelector(':only-child'); expect(component).toHaveClass('ams-page-menu'); }); it('renders a class name for end alignment', () => { const { container } = render(_jsx(PageMenu, { alignEnd: true })); const component = container.querySelector(':only-child'); expect(component).toHaveClass('ams-page-menu--align-end'); }); it('renders a class name to prevent wrapping', () => { const { container } = render(_jsx(PageMenu, { wrap: false })); const component = container.querySelector(':only-child'); expect(component).toHaveClass('ams-page-menu--no-wrap'); }); it('is able to pass a React ref', () => { const ref = createRef(); const { container } = render(_jsx(PageMenu, { ref: ref, children: _jsx(PageMenu.Link, { href: "#", lang: "en", children: "English" }) })); const component = container.querySelector(':only-child'); expect(ref.current).toBe(component); }); it('renders an additional class name', () => { const { container } = render(_jsx(PageMenu, { className: "intro" })); const component = container.querySelector(':only-child'); expect(component).toHaveClass('intro'); expect(component).toHaveClass('ams-page-menu'); }); });