File tree Expand file tree Collapse file tree 2 files changed +37
-3
lines changed
packages/graphiql-react/src/editor Expand file tree Collapse file tree 2 files changed +37
-3
lines changed Original file line number Diff line number Diff line change
1
+ import { renderHook } from '@testing-library/react' ;
2
+ import { useKeyMap } from '../hooks' ;
3
+ import { CodeMirrorEditor , KeyMap } from '../types' ;
4
+
5
+ describe ( 'hooks' , ( ) => {
6
+ describe ( 'useKeyMap' , ( ) => {
7
+ it ( 'works correctly' , ( ) => {
8
+ let keys = { } ;
9
+ const editor : Pick < CodeMirrorEditor , 'addKeyMap' | 'removeKeyMap' > = {
10
+ addKeyMap : jest . fn ( ( keyMap : KeyMap ) => {
11
+ keys = { ...keys , ...keyMap } ;
12
+ } ) ,
13
+ removeKeyMap : jest . fn ( key => {
14
+ delete keys [ key ] ;
15
+ } ) ,
16
+ } ;
17
+ const callback = jest . fn ( ) ;
18
+ const { unmount } = renderHook ( ( ) =>
19
+ useKeyMap (
20
+ editor as unknown as CodeMirrorEditor ,
21
+ [ 'foo' , 'bar' ] ,
22
+ callback ,
23
+ ) ,
24
+ ) ;
25
+ expect ( Object . keys ( keys ) . length ) . toBe ( 2 ) ;
26
+ unmount ( ) ;
27
+ expect ( Object . keys ( keys ) . length ) . toBe ( 0 ) ;
28
+ } ) ;
29
+ } ) ;
30
+ } ) ;
Original file line number Diff line number Diff line change @@ -136,9 +136,12 @@ export function useKeyMap(
136
136
if ( ! editor ) {
137
137
return ;
138
138
}
139
- for ( const key of keys ) {
140
- editor . removeKeyMap ( key ) ;
141
- }
139
+ const handleRemoveKeys = ( ) => {
140
+ for ( const key of keys ) {
141
+ editor . removeKeyMap ( key ) ;
142
+ }
143
+ } ;
144
+ handleRemoveKeys ( ) ;
142
145
143
146
if ( callback ) {
144
147
const keyMap : Record < string , EmptyCallback > = { } ;
@@ -147,6 +150,7 @@ export function useKeyMap(
147
150
}
148
151
editor . addKeyMap ( keyMap ) ;
149
152
}
153
+ return handleRemoveKeys ;
150
154
} , [ editor , keys , callback ] ) ;
151
155
}
152
156
You can’t perform that action at this time.
0 commit comments