@@ -3,15 +3,16 @@ import React from 'react';
3
3
import usePopper from '../src/usePopper' ;
4
4
5
5
describe ( 'usePopper' , ( ) => {
6
- function renderHook ( fn ) {
6
+ function renderHook ( fn , initialProps ) {
7
7
let result = { current : null } ;
8
8
9
- function Wrapper ( ) {
10
- result . current = fn ( ) ;
9
+ function Wrapper ( props ) {
10
+ result . current = fn ( props ) ;
11
11
return null ;
12
12
}
13
13
14
- result . mount = mount ( < Wrapper /> ) ;
14
+ result . mount = mount ( < Wrapper { ...initialProps } /> ) ;
15
+ result . update = ( props ) => result . mount . setProps ( props ) ;
15
16
16
17
return result ;
17
18
}
@@ -46,4 +47,65 @@ describe('usePopper', () => {
46
47
done ( ) ;
47
48
} ) ;
48
49
} ) ;
50
+
51
+ it ( 'should add aria-describedBy for tooltips' , ( done ) => {
52
+ elements . popper . setAttribute ( 'role' , 'tooltip' ) ;
53
+ elements . popper . setAttribute ( 'id' , 'example123' ) ;
54
+
55
+ const result = renderHook ( ( ) =>
56
+ usePopper ( elements . reference , elements . popper ) ,
57
+ ) ;
58
+
59
+ setTimeout ( ( ) => {
60
+ expect (
61
+ document . querySelector ( '[aria-describedby="example123"]' ) ,
62
+ ) . to . equal ( elements . reference ) ;
63
+
64
+ result . mount . unmount ( ) ;
65
+
66
+ expect (
67
+ document . querySelector ( '[aria-describedby="example123"]' ) ,
68
+ ) . to . equal ( null ) ;
69
+
70
+ done ( ) ;
71
+ } ) ;
72
+ } ) ;
73
+
74
+ it ( 'should add to existing describedBy' , ( done ) => {
75
+ elements . popper . setAttribute ( 'role' , 'tooltip' ) ;
76
+ elements . popper . setAttribute ( 'id' , 'example123' ) ;
77
+ elements . reference . setAttribute ( 'aria-describedby' , 'foo, bar , baz ' ) ;
78
+
79
+ const result = renderHook ( ( ) =>
80
+ usePopper ( elements . reference , elements . popper ) ,
81
+ ) ;
82
+
83
+ setTimeout ( ( ) => {
84
+ expect (
85
+ document . querySelector (
86
+ '[aria-describedby="foo, bar , baz ,example123"]' ,
87
+ ) ,
88
+ ) . to . equal ( elements . reference ) ;
89
+
90
+ result . mount . unmount ( ) ;
91
+
92
+ expect (
93
+ document . querySelector ( '[aria-describedby="foo, bar , baz "]' ) ,
94
+ ) . to . equal ( elements . reference ) ;
95
+
96
+ done ( ) ;
97
+ } ) ;
98
+ } ) ;
99
+
100
+ it ( 'should not aria-describedBy any other role' , ( done ) => {
101
+ renderHook ( ( ) => usePopper ( elements . reference , elements . popper ) ) ;
102
+
103
+ setTimeout ( ( ) => {
104
+ expect (
105
+ document . querySelector ( '[aria-describedby="example123"]' ) ,
106
+ ) . to . equal ( null ) ;
107
+
108
+ done ( ) ;
109
+ } ) ;
110
+ } ) ;
49
111
} ) ;
0 commit comments