@@ -6,28 +6,29 @@ import {
6
6
act ,
7
7
waitForElement ,
8
8
waitForDomChange ,
9
- cleanup
9
+ cleanup ,
10
10
} from '@testing-library/react'
11
11
import Combobox from '../src/Combobox'
12
12
13
+ const noop = ( ) => { }
14
+
13
15
afterEach ( cleanup )
14
16
15
17
test ( 'renders' , ( ) => {
16
- const json = renderer . create (
17
- < Combobox />
18
- ) . toJSON ( )
18
+ const json = renderer
19
+ . create ( < Combobox name = "beep" value = "beep" onChange = { noop } /> )
20
+ . toJSON ( )
19
21
expect ( json ) . toMatchSnapshot ( )
20
22
} )
21
23
22
24
test ( 'clicking chevron button shows menu' , async ( ) => {
23
25
const tree = render (
24
26
< Combobox
25
- label = 'Beep'
26
- name = 'beep'
27
- options = { [
28
- 'beep' ,
29
- 'boop' ,
30
- ] }
27
+ label = "Beep"
28
+ name = "beep"
29
+ value = "beep"
30
+ options = { [ 'beep' , 'boop' ] }
31
+ onChange = { noop }
31
32
/>
32
33
)
33
34
const button = await tree . getByRole ( 'button' )
@@ -40,18 +41,16 @@ test('clicking item updates value', async () => {
40
41
const onChange = jest . fn ( )
41
42
const tree = render (
42
43
< Combobox
43
- label = 'Beep'
44
- name = 'beep'
45
- options = { [
46
- 'beep' ,
47
- 'boop' ,
48
- ] }
44
+ label = "Beep"
45
+ name = "beep"
46
+ value = "beep"
47
+ options = { [ 'beep' , 'boop' ] }
49
48
onChange = { onChange }
50
49
/>
51
50
)
52
51
const button = await tree . getByRole ( 'button' )
53
52
fireEvent . click ( button )
54
- const [ option ] = await waitForElement ( ( ) => tree . findAllByRole ( 'option' ) )
53
+ const [ option ] = await waitForElement ( ( ) => tree . findAllByRole ( 'option' ) )
55
54
fireEvent . click ( option )
56
55
expect ( onChange ) . toHaveBeenCalledWith ( 'beep' )
57
56
} )
@@ -60,12 +59,10 @@ test('down arrow moves selection down', async () => {
60
59
const onChange = jest . fn ( )
61
60
const tree = render (
62
61
< Combobox
63
- label = 'Beep'
64
- name = 'beep'
65
- options = { [
66
- 'beep' ,
67
- 'boop' ,
68
- ] }
62
+ label = "Beep"
63
+ name = "beep"
64
+ value = "beep"
65
+ options = { [ 'beep' , 'boop' ] }
69
66
onChange = { onChange }
70
67
/>
71
68
)
@@ -91,12 +88,10 @@ test('up arrow moves selection up', async () => {
91
88
const onChange = jest . fn ( )
92
89
const tree = render (
93
90
< Combobox
94
- label = 'Beep'
95
- name = 'beep'
96
- options = { [
97
- 'beep' ,
98
- 'boop' ,
99
- ] }
91
+ label = "Beep"
92
+ name = "beep"
93
+ value = "beep"
94
+ options = { [ 'beep' , 'boop' ] }
100
95
onChange = { onChange }
101
96
/>
102
97
)
@@ -125,12 +120,11 @@ test('up arrow moves selection up', async () => {
125
120
test ( 'escape key closes listbox' , async ( ) => {
126
121
const tree = render (
127
122
< Combobox
128
- label = 'Beep'
129
- name = 'beep'
130
- options = { [
131
- 'beep' ,
132
- 'boop' ,
133
- ] }
123
+ label = "Beep"
124
+ name = "beep"
125
+ value = "beep"
126
+ options = { [ 'beep' , 'boop' ] }
127
+ onChange = { noop }
134
128
/>
135
129
)
136
130
const button = await tree . getByRole ( 'button' )
@@ -149,12 +143,11 @@ test('escape key closes listbox', async () => {
149
143
test ( 'down arrow key opens listbox' , async ( ) => {
150
144
const tree = render (
151
145
< Combobox
152
- label = 'Beep'
153
- name = 'beep'
154
- options = { [
155
- 'beep' ,
156
- 'boop' ,
157
- ] }
146
+ label = "Beep"
147
+ name = "beep"
148
+ value = "beep"
149
+ options = { [ 'beep' , 'boop' ] }
150
+ onChange = { noop }
158
151
/>
159
152
)
160
153
const input = await tree . getByLabelText ( 'Beep' )
@@ -171,12 +164,11 @@ test('down arrow key opens listbox', async () => {
171
164
test ( 'up arrow key opens listbox' , async ( ) => {
172
165
const tree = render (
173
166
< Combobox
174
- label = 'Beep'
175
- name = 'beep'
176
- options = { [
177
- 'beep' ,
178
- 'boop' ,
179
- ] }
167
+ label = "Beep"
168
+ name = "beep"
169
+ value = "beep"
170
+ options = { [ 'beep' , 'boop' ] }
171
+ onChange = { noop }
180
172
/>
181
173
)
182
174
const input = await tree . getByLabelText ( 'Beep' )
@@ -193,12 +185,11 @@ test('up arrow key opens listbox', async () => {
193
185
test ( 'ignores keypresses with meta key' , async ( ) => {
194
186
const tree = render (
195
187
< Combobox
196
- label = 'Beep'
197
- name = 'beep'
198
- options = { [
199
- 'beep' ,
200
- 'boop' ,
201
- ] }
188
+ label = "Beep"
189
+ name = "beep"
190
+ value = "beep"
191
+ options = { [ 'beep' , 'boop' ] }
192
+ onChange = { noop }
202
193
/>
203
194
)
204
195
const input = await tree . getByLabelText ( 'Beep' )
@@ -208,20 +199,19 @@ test('ignores keypresses with meta key', async () => {
208
199
fireEvent . keyDown ( input , {
209
200
key : 'ArrowDown' ,
210
201
keyCode : 40 ,
211
- metaKey : true
202
+ metaKey : true ,
212
203
} )
213
204
expect ( listbox . style . visibility ) . toBe ( 'hidden' )
214
205
} )
215
206
216
207
test ( 'ignores return key when closed' , async ( ) => {
217
208
const tree = render (
218
209
< Combobox
219
- label = 'Beep'
220
- name = 'beep'
221
- options = { [
222
- 'beep' ,
223
- 'boop' ,
224
- ] }
210
+ label = "Beep"
211
+ name = "beep"
212
+ value = "beep"
213
+ options = { [ 'beep' , 'boop' ] }
214
+ onChange = { noop }
225
215
/>
226
216
)
227
217
const input = await tree . getByLabelText ( 'Beep' )
@@ -237,15 +227,14 @@ test('ignores return key when closed', async () => {
237
227
238
228
// todo
239
229
test . skip ( 'blur closes listbox' , async ( ) => {
240
- global . requestAnimationFrame = jest . fn ( fn => setTimeout ( fn , 1 ) )
230
+ ; ( global as any ) . requestAnimationFrame = jest . fn ( fn => setTimeout ( fn , 1 ) )
241
231
const tree = render (
242
232
< Combobox
243
- label = 'Beep'
244
- name = 'beep'
245
- options = { [
246
- 'beep' ,
247
- 'boop' ,
248
- ] }
233
+ label = "Beep"
234
+ name = "beep"
235
+ value = "beep"
236
+ options = { [ 'beep' , 'boop' ] }
237
+ onChange = { noop }
249
238
/>
250
239
)
251
240
const button = await tree . getByRole ( 'button' )
@@ -255,8 +244,8 @@ test.skip('blur closes listbox', async () => {
255
244
const listbox = await tree . getByRole ( 'listbox' , {
256
245
hidden : true ,
257
246
} )
258
- expect ( global . requestAnimationFrame ) . toHaveBeenCalled ( )
247
+ expect ( ( global as any ) . requestAnimationFrame ) . toHaveBeenCalled ( )
259
248
// not sure how to use testing-library here
260
- await waitForDomChange ( { container : tree } )
249
+ await waitForDomChange ( { container : ( tree as unknown ) as HTMLElement } )
261
250
expect ( listbox . style . visibility ) . toBe ( 'hidden' )
262
251
} )
0 commit comments