hedgedoc/src/components/common/icon-button/icon-button.test.tsx
Philip Molares 098344ebb7 test: add tests for icon-button
Signed-off-by: Philip Molares <philip.molares@udo.edu>
2022-05-31 23:12:33 +02:00

59 lines
1.7 KiB
TypeScript

/*
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
*
* SPDX-License-Identifier: AGPL-3.0-only
*/
import type { IconName } from '../fork-awesome/types'
import { IconButton } from './icon-button'
import { fireEvent, render, screen } from '@testing-library/react'
describe('IconButton', () => {
const icon: IconName = 'heart'
it('renders heart icon', () => {
const view = render(<IconButton icon={icon}>test</IconButton>)
expect(view.container).toMatchSnapshot()
})
it('renders with border', () => {
const view = render(
<IconButton icon={icon} border={true}>
test with border
</IconButton>
)
expect(view.container).toMatchSnapshot()
})
it('renders with fixed width icon', () => {
const view = render(
<IconButton icon={icon} iconFixedWidth={true}>
test with fixed with icon
</IconButton>
)
expect(view.container).toMatchSnapshot()
})
it('renders with additional className', () => {
const view = render(
<IconButton icon={icon} className={'testClass'}>
test with additional className
</IconButton>
)
expect(view.container).toMatchSnapshot()
})
it('correctly uses the onClick callback', async () => {
const onClick = jest.fn()
const view = render(
<IconButton icon={icon} onClick={onClick}>
test with onClick
</IconButton>
)
expect(view.container).toMatchSnapshot()
const iconButton = await screen.findByTestId('icon-button')
fireEvent(
iconButton,
new MouseEvent('click', {
bubbles: true,
cancelable: true
})
)
expect(onClick).toHaveBeenCalled()
})
})