import { fireEvent, render as originalRender } from '@testing-library/react' import { ReactNode } from 'react' import { PktMessagebox } from './Messagebox' describe('Messagebox', () => { const render = (jsx: ReactNode) => { const renderResult = originalRender(jsx) const messageBox = renderResult.container.children[0] return { ...renderResult, messageBox } } it('render with defaults', async () => { const { messageBox } = render() expect(messageBox.className).toEqual('pkt-messagebox') }) it('render with skin', async () => { const { messageBox } = render() expect(messageBox.classList).toContain('pkt-messagebox--green') }) it('render compact', async () => { const { messageBox } = render() expect(messageBox.classList).toContain('pkt-messagebox--compact') }) it('render simple title', async () => { const { getByText } = render() const titleElement = getByText('Messagebox title') expect(titleElement.classList).toContain('pkt-messagebox__title') }) it('render complex title', async () => { const { messageBox } = render( Messagebox title } />, ) const titleElement = messageBox.querySelector('.pkt-messagebox__title')! expect(titleElement.innerHTML).toEqual('Messagebox title') }) it('should not render empty title element when no title specified', async () => { const { messageBox } = render() expect(messageBox.querySelector('.pkt-messagebox__title')).not.toBeInTheDocument() }) it('closable', async () => { const { getByRole, messageBox } = render() const closeButton = getByRole('button', { name: 'Lukk' }) fireEvent.click(closeButton) expect(messageBox.classList).toContain('pkt-hide') }) })