-
Notifications
You must be signed in to change notification settings - Fork 1.8k
/
Button.test.tsx
64 lines (56 loc) · 1.99 KB
/
Button.test.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import React from 'react';
import { render, screen } from '@testing-library/react';
import {
checkAccessibility,
itRendersChildren,
itIsPolymorphic,
itSupportsSystemProps,
itSupportsFocusEvents,
} from '@mantine/tests';
import { Button, ButtonProps } from './Button';
import { ButtonGroup } from './ButtonGroup/ButtonGroup';
const defaultProps: ButtonProps = {};
describe('@mantine/core/Button', () => {
checkAccessibility([<Button>Mantine button</Button>]);
itRendersChildren(Button, defaultProps);
itIsPolymorphic(Button, defaultProps);
itSupportsFocusEvents(Button, defaultProps, 'button');
itSupportsSystemProps({
component: Button,
props: defaultProps,
displayName: '@mantine/core/Button',
refType: HTMLButtonElement,
providerName: 'Button',
excludePadding: true,
});
it('passes type to button component', () => {
render(<Button type="submit" />);
expect(screen.getByRole('button')).toHaveAttribute('type', 'submit');
});
it('renders left and right icons if they are provided', () => {
render(<Button rightIcon="right-icon" leftIcon="left-icon" />);
expect(screen.getByText('right-icon')).toBeInTheDocument();
expect(screen.getByText('left-icon')).toBeInTheDocument();
});
it('sets disabled attribute based on prop', () => {
render(<Button disabled />);
expect(screen.getByRole('button')).toBeDisabled();
expect(screen.getByRole('button')).toHaveAttribute('data-disabled');
});
it('sets data-loading attribute based on loading prop', () => {
render(<Button loading />);
expect(screen.getByRole('button')).toBeDisabled();
expect(screen.getByRole('button')).toHaveAttribute('data-loading');
});
it('exposes ButtonGroup as static component', () => {
expect(Button.Group).toBe(ButtonGroup);
});
it('is disabled when inside fieldset disabled', () => {
render(
<fieldset disabled>
<Button type="submit" />
</fieldset>
);
expect(screen.getByRole('button')).toBeDisabled();
});
});