@@ -61,7 +61,7 @@ describe('HotKeysService testing', () => {
6161 activeStore . setActiveNode ( file )
6262
6363 window . OCA = { Files : { Sidebar : { open : ( ) => { } , setActiveTab : ( ) => { } } } }
64- // @ts -expect-error We only mock what needed, we do not need Files.Router.goTo or Files.Navigation
64+ // We only mock what needed, we do not need Files.Router.goTo or Files.Navigation
6565 window . OCP = { Files : { Router : { goToRoute : goToRouteMock , params : { } , query : { } } } }
6666
6767 initialState = document . createElement ( 'input' )
@@ -74,55 +74,56 @@ describe('HotKeysService testing', () => {
7474 } )
7575
7676 it ( 'Pressing d should open the sidebar once' , ( ) => {
77- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'd' , code : 'KeyD' } ) )
77+ dispatchEvent ( { key : 'd' , code : 'KeyD' } )
7878
7979 // Modifier keys should not trigger the action
80- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'd' , code : 'KeyD' , ctrlKey : true } ) )
81- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'd' , code : 'KeyD' , altKey : true } ) )
82- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'd' , code : 'KeyD' , shiftKey : true } ) )
83- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'd' , code : 'KeyD' , metaKey : true } ) )
80+ dispatchEvent ( { key : 'd' , code : 'KeyD' , ctrlKey : true } )
81+ dispatchEvent ( { key : 'd' , code : 'KeyD' , altKey : true } )
82+ dispatchEvent ( { key : 'd' , code : 'KeyD' , shiftKey : true } )
83+ dispatchEvent ( { key : 'd' , code : 'KeyD' , metaKey : true } )
8484
8585 expect ( sidebarAction . enabled ) . toHaveReturnedWith ( true )
8686 expect ( sidebarAction . exec ) . toHaveBeenCalledOnce ( )
8787 } )
8888
8989 it ( 'Pressing F2 should rename the file' , ( ) => {
90- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'F2' , code : 'F2' } ) )
90+ dispatchEvent ( { key : 'F2' , code : 'F2' } )
9191
9292 // Modifier keys should not trigger the action
93- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'F2' , code : 'F2' , ctrlKey : true } ) )
94- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'F2' , code : 'F2' , altKey : true } ) )
95- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'F2' , code : 'F2' , shiftKey : true } ) )
96- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'F2' , code : 'F2' , metaKey : true } ) )
93+ dispatchEvent ( { key : 'F2' , code : 'F2' , ctrlKey : true } )
94+ dispatchEvent ( { key : 'F2' , code : 'F2' , altKey : true } )
95+ dispatchEvent ( { key : 'F2' , code : 'F2' , shiftKey : true } )
96+ dispatchEvent ( { key : 'F2' , code : 'F2' , metaKey : true } )
9797
9898 expect ( renameAction . enabled ) . toHaveReturnedWith ( true )
9999 expect ( renameAction . exec ) . toHaveBeenCalledOnce ( )
100100 } )
101101
102102 it ( 'Pressing s should toggle favorite' , ( ) => {
103103 vi . spyOn ( axios , 'post' ) . mockImplementationOnce ( ( ) => Promise . resolve ( ) )
104- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 's' , code : 'KeyS' } ) )
104+ dispatchEvent ( { key : 's' , code : 'KeyS' } )
105105
106106 // Modifier keys should not trigger the action
107- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 's' , code : 'KeyS' , ctrlKey : true } ) )
108- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 's' , code : 'KeyS' , altKey : true } ) )
109- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 's' , code : 'KeyS' , shiftKey : true } ) )
110- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 's' , code : 'KeyS' , metaKey : true } ) )
107+ dispatchEvent ( { key : 's' , code : 'KeyS' , ctrlKey : true } )
108+ dispatchEvent ( { key : 's' , code : 'KeyS' , altKey : true } )
109+ dispatchEvent ( { key : 's' , code : 'KeyS' , shiftKey : true } )
110+ dispatchEvent ( { key : 's' , code : 'KeyS' , metaKey : true } )
111111
112112 expect ( favoriteAction . enabled ) . toHaveReturnedWith ( true )
113113 expect ( favoriteAction . exec ) . toHaveBeenCalledOnce ( )
114114 } )
115115
116116 it ( 'Pressing Delete should delete the file' , async ( ) => {
117+ // @ts -expect-error unit testing
117118 vi . spyOn ( deleteAction . _action , 'exec' ) . mockResolvedValue ( ( ) => true )
118119
119- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'Delete' , code : 'Delete' } ) )
120+ dispatchEvent ( { key : 'Delete' , code : 'Delete' } )
120121
121122 // Modifier keys should not trigger the action
122- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'Delete' , code : 'Delete' , ctrlKey : true } ) )
123- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'Delete' , code : 'Delete' , altKey : true } ) )
124- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'Delete' , code : 'Delete' , shiftKey : true } ) )
125- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'Delete' , code : 'Delete' , metaKey : true } ) )
123+ dispatchEvent ( { key : 'Delete' , code : 'Delete' , ctrlKey : true } )
124+ dispatchEvent ( { key : 'Delete' , code : 'Delete' , altKey : true } )
125+ dispatchEvent ( { key : 'Delete' , code : 'Delete' , shiftKey : true } )
126+ dispatchEvent ( { key : 'Delete' , code : 'Delete' , metaKey : true } )
126127
127128 expect ( deleteAction . enabled ) . toHaveReturnedWith ( true )
128129 expect ( deleteAction . exec ) . toHaveBeenCalledOnce ( )
@@ -132,7 +133,7 @@ describe('HotKeysService testing', () => {
132133 expect ( goToRouteMock ) . toHaveBeenCalledTimes ( 0 )
133134 window . OCP . Files . Router . query = { dir : '/foo/bar' }
134135
135- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'ArrowUp' , code : 'ArrowUp' , altKey : true } ) )
136+ dispatchEvent ( { key : 'ArrowUp' , code : 'ArrowUp' , altKey : true } )
136137
137138 expect ( goToRouteMock ) . toHaveBeenCalledOnce ( )
138139 expect ( goToRouteMock . mock . calls [ 0 ] [ 2 ] . dir ) . toBe ( '/foo' )
@@ -151,25 +152,34 @@ describe('HotKeysService testing', () => {
151152 setTimeout ( resolve , 500 )
152153 } )
153154
154- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'v' , code : 'KeyV' } ) )
155+ dispatchEvent ( { key : 'v' , code : 'KeyV' } )
155156 await waitForUserConfig ( )
156157 expect ( userConfigStore . userConfig . grid_view ) . toBe ( ! currentGridConfig )
157158
158159 // Modifier keys should not trigger the action
159- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'Delete' , code : 'Delete' , ctrlKey : true } ) )
160+ dispatchEvent ( { key : 'Delete' , code : 'Delete' , ctrlKey : true } )
160161 await waitForUserConfig ( )
161162 expect ( userConfigStore . userConfig . grid_view ) . toBe ( ! currentGridConfig )
162163
163- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'Delete' , code : 'Delete' , altKey : true } ) )
164+ dispatchEvent ( { key : 'Delete' , code : 'Delete' , altKey : true } )
164165 await waitForUserConfig ( )
165166 expect ( userConfigStore . userConfig . grid_view ) . toBe ( ! currentGridConfig )
166167
167- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'Delete' , code : 'Delete' , shiftKey : true } ) )
168+ dispatchEvent ( { key : 'Delete' , code : 'Delete' , shiftKey : true } )
168169 await waitForUserConfig ( )
169170 expect ( userConfigStore . userConfig . grid_view ) . toBe ( ! currentGridConfig )
170171
171- window . dispatchEvent ( new KeyboardEvent ( 'keydown' , { key : 'Delete' , code : 'Delete' , metaKey : true } ) )
172+ dispatchEvent ( { key : 'Delete' , code : 'Delete' , metaKey : true } )
172173 await waitForUserConfig ( )
173174 expect ( userConfigStore . userConfig . grid_view ) . toBe ( ! currentGridConfig )
174175 } )
175176} )
177+
178+ /**
179+ * Helper to dispatch the correct event.
180+ *
181+ * @param init - KeyboardEvent options
182+ */
183+ function dispatchEvent ( init : KeyboardEventInit ) {
184+ document . body . dispatchEvent ( new KeyboardEvent ( 'keydown' , { ...init , bubbles : true } ) )
185+ }
0 commit comments