Skip to content

Commit 615b1fa

Browse files
authored
test(Label): add tests for disabled labels (#10254)
1 parent 0a64acd commit 615b1fa

File tree

2 files changed

+89
-2
lines changed

2 files changed

+89
-2
lines changed

packages/react-core/src/components/Label/Label.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ export const Label: React.FunctionComponent<LabelProps> = ({
284284
...editableProps
285285
}),
286286
...(isClickableDisabled && isButton && { disabled: true }),
287-
...(isClickableDisabled && href && { tabindex: -1, 'aria-disabled': true })
287+
...(isClickableDisabled && href && { tabIndex: -1, 'aria-disabled': true })
288288
};
289289

290290
let labelComponentChild = (

packages/react-core/src/components/Label/__tests__/Label.test.tsx

+88-1
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,93 @@ describe('Label', () => {
142142

143143
await user.click(label);
144144

145-
expect(mockCallback).toBeCalledTimes(1);
145+
expect(mockCallback).toHaveBeenCalledTimes(1);
146+
});
147+
148+
test('disabled clickable label does not call passed callback on click', async () => {
149+
const mockCallback = jest.fn();
150+
const user = userEvent.setup();
151+
152+
render(
153+
<Label isDisabled onClick={mockCallback}>
154+
Click me
155+
</Label>
156+
);
157+
158+
const label = screen.getByText('Click me');
159+
160+
await user.click(label);
161+
162+
expect(mockCallback).not.toHaveBeenCalled();
163+
});
164+
165+
test('disabled clickable label is a disabled button', async () => {
166+
const mockCallback = jest.fn();
167+
168+
render(
169+
<Label isDisabled onClick={mockCallback}>
170+
Click me
171+
</Label>
172+
);
173+
174+
const labelButton = screen.getByRole('button');
175+
176+
expect(labelButton).toHaveAttribute('disabled');
177+
});
178+
179+
test('link label is an anchor', () => {
180+
const href = '#example';
181+
182+
render(<Label href={href}>Click me</Label>);
183+
184+
const anchor = screen.getByRole('link', { name: 'Click me' });
185+
186+
expect(anchor).toBeInTheDocument();
187+
expect(anchor).toHaveAttribute('href', href);
188+
});
189+
190+
test('disabled link label is an anchor with aria-disabled attribute', () => {
191+
const href = '#example';
192+
193+
render(
194+
<Label isDisabled href={href}>
195+
Click me
196+
</Label>
197+
);
198+
199+
const anchor = screen.getByRole('link', { name: 'Click me' });
200+
201+
expect(anchor).toBeInTheDocument();
202+
expect(anchor).toHaveAttribute('href', href);
203+
expect(anchor).toHaveAttribute('tabIndex', '-1');
204+
expect(anchor).toHaveAttribute('aria-disabled', 'true');
205+
});
206+
207+
test('disabled removable clickable label has a disabled close button', async () => {
208+
const mockCallback = jest.fn();
209+
210+
render(
211+
<Label isDisabled onClick={mockCallback} onClose={mockCallback}>
212+
Click me
213+
</Label>
214+
);
215+
216+
const closeButton = screen.getByLabelText('Close Click me');
217+
218+
expect(closeButton).toBeDisabled();
219+
});
220+
221+
test('disabled removable link label has a disabled close button', async () => {
222+
const mockCallback = jest.fn();
223+
224+
render(
225+
<Label isDisabled href="#" onClose={mockCallback}>
226+
Click me
227+
</Label>
228+
);
229+
230+
const closeButton = screen.getByLabelText('Close Click me');
231+
232+
expect(closeButton).toBeDisabled();
146233
});
147234
});

0 commit comments

Comments
 (0)