@@ -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
}
@@ -51,13 +52,47 @@ describe('usePopper', () => {
51
52
elements . popper . setAttribute ( 'role' , 'tooltip' ) ;
52
53
elements . popper . setAttribute ( 'id' , 'example123' ) ;
53
54
54
- renderHook ( ( ) => usePopper ( elements . reference , elements . popper ) ) ;
55
+ const result = renderHook ( ( ) =>
56
+ usePopper ( elements . reference , elements . popper ) ,
57
+ ) ;
55
58
56
59
setTimeout ( ( ) => {
57
60
expect (
58
61
document . querySelector ( '[aria-describedby="example123"]' ) ,
59
62
) . to . equal ( elements . reference ) ;
60
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
+
61
96
done ( ) ;
62
97
} ) ;
63
98
} ) ;
0 commit comments