@@ -118,7 +118,7 @@ describe("test suite", () => {
118118 } ) ;
119119
120120 function assertActivationBehavior ( ) {
121- expect ( nova . commands . register ) . toBeCalledTimes ( 4 ) ;
121+ expect ( nova . commands . register ) . toBeCalledTimes ( 5 ) ;
122122 expect ( nova . commands . register ) . toBeCalledWith (
123123 "apexskier.typescript.rename" ,
124124 expect . any ( Function )
@@ -135,6 +135,10 @@ describe("test suite", () => {
135135 "apexskier.typescript.commands.organizeImports" ,
136136 expect . any ( Function )
137137 ) ;
138+ expect ( nova . commands . register ) . toBeCalledWith (
139+ "apexskier.typescript.commands.formatDocument" ,
140+ expect . any ( Function )
141+ ) ;
138142
139143 // installs dependencies
140144
@@ -292,7 +296,7 @@ describe("test suite", () => {
292296 assertActivationBehavior ( ) ;
293297 } ) ;
294298
295- test ( "watches files for import organization " , async ( ) => {
299+ test ( "watches files to apply post-save actions " , async ( ) => {
296300 resetMocks ( ) ;
297301
298302 await activate ( ) ;
@@ -312,21 +316,71 @@ describe("test suite", () => {
312316 } ,
313317 } ;
314318 setupWatcher ( mockEditor ) ;
319+
315320 expect ( mockEditor . onWillSave ) . toBeCalledTimes ( 0 ) ;
321+ const refreshListener = ( nova . config . onDidChange as jest . Mock ) . mock
322+ . calls [ 0 ] [ 1 ] ;
323+
324+ const getBoolMock : jest . Mock = require ( "nova-extension-utils" ) . preferences
325+ . getOverridableBoolean ;
326+
327+ getBoolMock . mockReturnValue ( false ) ;
328+ refreshListener ( ) ;
316329
317- require ( "nova-extension-utils" ) . preferences . getOverridableBoolean . mockReturnValue (
318- true
330+ // eslint-disable-next-line no-unused-vars
331+ let saveHandler : ( editor : unknown ) => Promise < unknown > ;
332+
333+ getBoolMock . mockReset ( ) . mockReturnValue ( true ) ;
334+ refreshListener ( ) ;
335+ saveHandler = mockEditor . onWillSave . mock . calls [ 0 ] [ 0 ] ;
336+ await saveHandler ( mockEditor ) ;
337+ expect ( nova . commands . invoke ) . toBeCalledTimes ( 2 ) ;
338+ expect ( nova . commands . invoke ) . toHaveBeenNthCalledWith (
339+ 1 ,
340+ "apexskier.typescript.commands.organizeImports" ,
341+ mockEditor
342+ ) ;
343+ expect ( nova . commands . invoke ) . toHaveBeenNthCalledWith (
344+ 2 ,
345+ "apexskier.typescript.commands.formatDocument" ,
346+ mockEditor
319347 ) ;
320- setupWatcher ( mockEditor ) ;
321- expect ( mockEditor . onWillSave ) . toBeCalledTimes ( 1 ) ;
322348
323- const saveHandler = ( mockEditor . onWillSave as jest . Mock ) . mock . calls [ 0 ] [ 0 ] ;
349+ mockEditor . onWillSave . mockReset ( ) ;
350+ ( nova . commands . invoke as jest . Mock ) . mockReset ( ) ;
351+ getBoolMock
352+ . mockReset ( )
353+ . mockImplementation (
354+ ( test : string ) =>
355+ test == "apexskier.typescript.config.organizeImportsOnSave"
356+ ) ;
357+ refreshListener ( ) ;
358+ saveHandler = mockEditor . onWillSave . mock . calls [ 0 ] [ 0 ] ;
324359 await saveHandler ( mockEditor ) ;
360+ expect ( nova . commands . invoke ) . toBeCalledTimes ( 1 ) ;
325361 expect ( nova . commands . invoke ) . toHaveBeenNthCalledWith (
326362 1 ,
327363 "apexskier.typescript.commands.organizeImports" ,
328364 mockEditor
329365 ) ;
366+
367+ mockEditor . onWillSave . mockReset ( ) ;
368+ ( nova . commands . invoke as jest . Mock ) . mockReset ( ) ;
369+ getBoolMock
370+ . mockReset ( )
371+ . mockImplementation (
372+ ( test : string ) =>
373+ test == "apexskier.typescript.config.formatDocumentOnSave"
374+ ) ;
375+ refreshListener ( ) ;
376+ saveHandler = mockEditor . onWillSave . mock . calls [ 0 ] [ 0 ] ;
377+ await saveHandler ( mockEditor ) ;
378+ expect ( nova . commands . invoke ) . toBeCalledTimes ( 1 ) ;
379+ expect ( nova . commands . invoke ) . toHaveBeenNthCalledWith (
380+ 1 ,
381+ "apexskier.typescript.commands.formatDocument" ,
382+ mockEditor
383+ ) ;
330384 } ) ;
331385 } ) ;
332386} ) ;
0 commit comments