@@ -310,32 +310,64 @@ describe('Tag', () => {
310
310
} ) ;
311
311
it ( 'Controlled selectable tag' , ( ) => {
312
312
const ref = React . createRef ( ) ;
313
- const { rerender, container } = render (
313
+ const { rerender } = render (
314
314
< SelectableTag type = "red" text = "Test Tag" ref = { ref } selected = { true } />
315
315
) ;
316
316
317
317
expect ( ref . current ) . toBeInstanceOf ( HTMLButtonElement ) ;
318
- expect ( container . firstChild ) . toHaveClass (
319
- `${ prefix } --tag--selectable-selected`
318
+ expect ( screen . getByRole ( 'button' , { name : 'Test Tag' } ) ) . toHaveAttribute (
319
+ 'aria-pressed' ,
320
+ 'true'
320
321
) ;
321
322
322
323
rerender (
323
324
< SelectableTag type = "red" text = "Test Tag" ref = { ref } selected = { false } />
324
325
) ;
325
- expect ( container . firstChild ) . not . toHaveClass (
326
- `${ prefix } --tag--selectable-selected`
326
+ expect ( screen . getByRole ( 'button' , { name : 'Test Tag' } ) ) . toHaveAttribute (
327
+ 'aria-pressed' ,
328
+ 'false'
327
329
) ;
328
330
} ) ;
329
331
it ( 'Controlled selectable tag, should call onChange' , async ( ) => {
330
332
const onChange = jest . fn ( ) ;
331
333
332
- const { container } = render (
334
+ render (
333
335
< SelectableTag text = "Tag content" onChange = { onChange } selected = { true } />
334
336
) ;
335
337
336
- const selectableTag = container . firstChild ;
338
+ const selectableTag = screen . getByRole ( 'button' , { name : 'Tag content' } ) ;
337
339
338
340
await userEvent . click ( selectableTag ) ;
339
341
expect ( onChange ) . toHaveBeenCalledWith ( false ) ;
340
342
} ) ;
343
+ it ( 'Controlled selectable tag should be selected by default if defaultSelected is true' , ( ) => {
344
+ const onChange = jest . fn ( ) ;
345
+
346
+ render (
347
+ < SelectableTag
348
+ text = "Tag content"
349
+ onChange = { onChange }
350
+ defaultSelected = { true }
351
+ />
352
+ ) ;
353
+
354
+ const selectableTag = screen . getByRole ( 'button' , { name : 'Tag content' } ) ;
355
+
356
+ expect ( selectableTag ) . toHaveAttribute ( 'aria-pressed' , 'true' ) ;
357
+ } ) ;
358
+ it ( 'Controlled selectable tag should not be be selected by default if defaultSelected is false' , ( ) => {
359
+ const onChange = jest . fn ( ) ;
360
+
361
+ render (
362
+ < SelectableTag
363
+ text = "Tag content"
364
+ onChange = { onChange }
365
+ defaultSelected = { false }
366
+ />
367
+ ) ;
368
+
369
+ const selectableTag = screen . getByRole ( 'button' , { name : 'Tag content' } ) ;
370
+
371
+ expect ( selectableTag ) . toHaveAttribute ( 'aria-pressed' , 'false' ) ;
372
+ } ) ;
341
373
} ) ;
0 commit comments