@@ -57,6 +57,15 @@ function useLocalFilter(filter: () => boolean) {
57
57
return count ;
58
58
}
59
59
60
+ function useEnabledFlag ( enabled : boolean ) {
61
+ const [ count , setCount ] = useState ( 0 ) ;
62
+ const increment = ( ) => setCount ( count + 1 ) ;
63
+
64
+ useHotkeys ( 'a' , increment , { enabled} ) ;
65
+
66
+ return count ;
67
+ }
68
+
60
69
const HotkeysOnInput = ( { onPress, useTags } : { onPress : ( ) => void , useTags ?: boolean } ) => {
61
70
useHotkeys ( 'a' , onPress , { enableOnTags : useTags ? [ 'INPUT' ] : undefined } ) ;
62
71
@@ -303,16 +312,41 @@ test('useHotkeys should not be enabled on given form tags when tags is not set',
303
312
} ) ;
304
313
305
314
test ( 'useHotkeys should use its own custom filter system instead of the global hotkeys one' , ( ) => {
306
- const { result : result1 } = renderHook ( ( ) => useLocalFilter ( ( ) => false ) ) ;
307
- const { result : result2 } = renderHook ( ( ) => useLocalFilter ( ( ) => true ) ) ;
315
+ const { result, rerender } = renderHook ( ( returnFilterVal : boolean = false ) => useLocalFilter ( ( ) => returnFilterVal ) ) ;
308
316
309
- expect ( result1 . current ) . toBe ( 0 ) ;
310
- expect ( result2 . current ) . toBe ( 0 ) ;
317
+ expect ( result . current ) . toBe ( 0 ) ;
311
318
312
319
act ( ( ) => {
313
320
fireEvent . keyDown ( document . body , { key : 'a' , keyCode : 65 } ) ;
314
321
} ) ;
315
322
316
- expect ( result1 . current ) . toBe ( 0 ) ;
317
- expect ( result2 . current ) . toBe ( 1 ) ;
323
+ expect ( result . current ) . toBe ( 0 ) ;
324
+
325
+ rerender ( true ) ;
326
+
327
+ act ( ( ) => {
328
+ fireEvent . keyDown ( document . body , { key : 'a' , keyCode : 65 } ) ;
329
+ } ) ;
330
+
331
+ expect ( result . current ) . toBe ( 1 ) ;
332
+ } ) ;
333
+
334
+ test ( 'useHotkeys should not be enabled when enabled flag is set to false' , ( ) => {
335
+ const { result, rerender } = renderHook ( ( enabled : boolean = false ) => useEnabledFlag ( enabled ) ) ;
336
+
337
+ expect ( result . current ) . toBe ( 0 ) ;
338
+
339
+ act ( ( ) => {
340
+ fireEvent . keyDown ( document . body , { key : 'a' , keyCode : 65 } ) ;
341
+ } ) ;
342
+
343
+ expect ( result . current ) . toBe ( 0 ) ;
344
+
345
+ rerender ( true ) ;
346
+
347
+ act ( ( ) => {
348
+ fireEvent . keyDown ( document . body , { key : 'a' , keyCode : 65 } ) ;
349
+ } ) ;
350
+
351
+ expect ( result . current ) . toBe ( 1 ) ;
318
352
} ) ;
0 commit comments