|
1 | | -import { render } from '@testing-library/react'; |
| 1 | +import { render, screen } from '@testing-library/react'; |
2 | 2 | import ResponsiveActions from './ResponsiveActions'; |
3 | 3 | import ResponsiveAction from '../ResponsiveAction'; |
4 | 4 |
|
@@ -58,69 +58,58 @@ describe('ResponsiveActions component', () => { |
58 | 58 | }); |
59 | 59 |
|
60 | 60 | test('ResponsiveActions with all dropdown items disabled should disable kebab', () => { |
61 | | - const { container } = render( |
| 61 | + render( |
62 | 62 | <ResponsiveActions breakpoint="lg"> |
63 | 63 | <ResponsiveAction isDisabled>Disabled action 1</ResponsiveAction> |
64 | 64 | <ResponsiveAction isDisabled>Disabled action 2</ResponsiveAction> |
65 | 65 | </ResponsiveActions>); |
66 | 66 |
|
67 | | - // Kebab toggle should be disabled when all dropdown items are disabled |
68 | | - const kebabToggle = container.querySelector('[data-ouia-component-id="ResponsiveActions-menu-dropdown-toggle"]'); |
69 | | - expect(kebabToggle).toHaveAttribute('disabled'); |
70 | | - expect(container).toMatchSnapshot(); |
| 67 | + const kebabToggle = screen.getByRole('button', { name: /actions overflow menu/i }); |
| 68 | + expect(kebabToggle).toBeDisabled(); |
71 | 69 | }); |
72 | 70 |
|
73 | 71 | test('ResponsiveActions with some enabled dropdown items should not disable kebab', () => { |
74 | | - const { container } = render( |
| 72 | + render( |
75 | 73 | <ResponsiveActions breakpoint="lg"> |
76 | 74 | <ResponsiveAction isDisabled>Disabled action</ResponsiveAction> |
77 | 75 | <ResponsiveAction>Enabled action</ResponsiveAction> |
78 | 76 | </ResponsiveActions>); |
79 | 77 |
|
80 | | - // Kebab toggle should be enabled when at least one dropdown item is enabled |
81 | | - const kebabToggle = container.querySelector('[data-ouia-component-id="ResponsiveActions-menu-dropdown-toggle"]'); |
82 | | - expect(kebabToggle).not.toHaveAttribute('disabled'); |
83 | | - expect(container).toMatchSnapshot(); |
| 78 | + const kebabToggle = screen.getByRole('button', { name: /actions overflow menu/i }); |
| 79 | + expect(kebabToggle).toBeEnabled(); |
84 | 80 | }); |
85 | 81 |
|
86 | 82 | test('ResponsiveActions with enabled pinned item and disabled regular item should disable kebab above breakpoint', () => { |
87 | | - const { container } = render( |
| 83 | + render( |
88 | 84 | <ResponsiveActions breakpoint="lg"> |
89 | 85 | <ResponsiveAction isPinned>Enabled pinned action</ResponsiveAction> |
90 | 86 | <ResponsiveAction isDisabled>Disabled regular action</ResponsiveAction> |
91 | 87 | </ResponsiveActions>); |
92 | 88 |
|
93 | | - // Above breakpoint: pinned items show as buttons, so kebab is disabled if regular items are disabled |
94 | | - // (When resized below breakpoint, the pinned item moves into kebab and it becomes enabled) |
95 | | - const kebabToggle = container.querySelector('[data-ouia-component-id="ResponsiveActions-menu-dropdown-toggle"]'); |
96 | | - expect(kebabToggle).toHaveAttribute('disabled'); |
97 | | - expect(container).toMatchSnapshot(); |
| 89 | + const kebabToggle = screen.getByRole('button', { name: /actions overflow menu/i }); |
| 90 | + expect(kebabToggle).toBeDisabled(); |
98 | 91 | }); |
99 | 92 |
|
100 | 93 | test('ResponsiveActions with enabled pinned item and enabled regular item should not disable kebab', () => { |
101 | | - const { container } = render( |
| 94 | + render( |
102 | 95 | <ResponsiveActions breakpoint="lg"> |
103 | 96 | <ResponsiveAction isPinned>Enabled pinned action</ResponsiveAction> |
104 | 97 | <ResponsiveAction>Enabled regular action</ResponsiveAction> |
105 | 98 | </ResponsiveActions>); |
106 | 99 |
|
107 | | - // Kebab should be enabled because there's an enabled regular action |
108 | | - const kebabToggle = container.querySelector('[data-ouia-component-id="ResponsiveActions-menu-dropdown-toggle"]'); |
109 | | - expect(kebabToggle).not.toHaveAttribute('disabled'); |
110 | | - expect(container).toMatchSnapshot(); |
| 100 | + const kebabToggle = screen.getByRole('button', { name: /actions overflow menu/i }); |
| 101 | + expect(kebabToggle).toBeEnabled(); |
111 | 102 | }); |
112 | 103 |
|
113 | 104 | test('ResponsiveActions with all dropdown items disabled including pinned should disable kebab', () => { |
114 | | - const { container } = render( |
| 105 | + render( |
115 | 106 | <ResponsiveActions breakpoint="lg"> |
116 | 107 | <ResponsiveAction isPinned isDisabled>Disabled pinned action</ResponsiveAction> |
117 | 108 | <ResponsiveAction isDisabled>Disabled action</ResponsiveAction> |
118 | 109 | </ResponsiveActions>); |
119 | 110 |
|
120 | | - // Kebab toggle should be disabled when all dropdown items (including pinned) are disabled |
121 | | - const kebabToggle = container.querySelector('[data-ouia-component-id="ResponsiveActions-menu-dropdown-toggle"]'); |
122 | | - expect(kebabToggle).toHaveAttribute('disabled'); |
123 | | - expect(container).toMatchSnapshot(); |
| 111 | + const kebabToggle = screen.getByRole('button', { name: /actions overflow menu/i }); |
| 112 | + expect(kebabToggle).toBeDisabled(); |
124 | 113 | }); |
125 | 114 |
|
126 | 115 | test('ResponsiveActions with only persistent items should not render kebab', () => { |
|
0 commit comments