@@ -142,6 +142,93 @@ describe('Label', () => {
142
142
143
143
await user . click ( label ) ;
144
144
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 ( ) ;
146
233
} ) ;
147
234
} ) ;
0 commit comments