diff --git a/src/main/files.ts b/src/main/files.ts index f5d14c0950..b0a9b8b69b 100644 --- a/src/main/files.ts +++ b/src/main/files.ts @@ -56,7 +56,7 @@ export async function showOpenDialog() { */ export async function showSaveDialog(as?: string): Promise { // We want to save to a folder, so we'll use an open dialog here - const filePaths = dialog.showOpenDialogSync({ + const { filePaths } = await dialog.showOpenDialog({ buttonLabel: 'Save here', properties: ['openDirectory', 'createDirectory'], title: `Save Fiddle${as ? ` as ${as}` : ''}`, diff --git a/tests/main/files-spec.ts b/tests/main/files-spec.ts index a201582c53..c611c0da1a 100644 --- a/tests/main/files-spec.ts +++ b/tests/main/files-spec.ts @@ -101,7 +101,7 @@ describe('files', () => { it('tries to open an "open" dialog to be used as a save dialog', async () => { await showSaveDialog(); - expect(dialog.showOpenDialogSync).toHaveBeenCalledWith({ + expect(dialog.showOpenDialog).toHaveBeenCalledWith({ buttonLabel: 'Save here', properties: ['openDirectory', 'createDirectory'], title: 'Save Fiddle', @@ -111,7 +111,7 @@ describe('files', () => { it('tries to open an "open" dialog to be used as a save as dialog', async () => { await showSaveDialog('hello'); - expect(dialog.showOpenDialogSync).toHaveBeenCalledWith({ + expect(dialog.showOpenDialog).toHaveBeenCalledWith({ buttonLabel: 'Save here', properties: ['openDirectory', 'createDirectory'], title: 'Save Fiddle as hello', @@ -119,14 +119,20 @@ describe('files', () => { }); it('handles not getting a path returned', async () => { - mocked(dialog.showOpenDialogSync).mockReturnValueOnce([]); + mocked(dialog.showOpenDialog).mockResolvedValueOnce({ + canceled: true, + filePaths: [], + }); await showSaveDialog(); expect(fs.pathExists).toHaveBeenCalledTimes(0); }); it('ensures that the target is empty on save', async () => { const consent = true; - mocked(dialog.showOpenDialogSync).mockReturnValue(['path']); + mocked(dialog.showOpenDialog).mockResolvedValueOnce({ + canceled: false, + filePaths: ['path'], + }); mocked(dialog.showMessageBox).mockResolvedValue({ response: consent ? 1 : 0, checkboxChecked: false, @@ -141,7 +147,10 @@ describe('files', () => { it('does not overwrite files without consent', async () => { const consent = false; - mocked(dialog.showOpenDialogSync).mockReturnValue(['path']); + mocked(dialog.showOpenDialog).mockResolvedValueOnce({ + canceled: false, + filePaths: ['path'], + }); mocked(dialog.showMessageBox).mockResolvedValue({ response: consent ? 1 : 0, checkboxChecked: false, @@ -157,7 +166,10 @@ describe('files', () => { it('does not overwrite files if an error happens', async () => { const err = new Error('💩'); - mocked(dialog.showOpenDialogSync).mockReturnValue(['path']); + mocked(dialog.showOpenDialog).mockResolvedValueOnce({ + canceled: false, + filePaths: ['path'], + }); mocked(dialog.showMessageBox).mockRejectedValue(err); mocked(getOrCreateMainWindow).mockResolvedValue(mockWindow); (fs.pathExists as jest.Mock).mockResolvedValue(true); @@ -281,7 +293,7 @@ describe('files', () => { mocked(getFiles).mockResolvedValue({ files: new Map() }); await saveFiddle(); - expect(dialog.showOpenDialogSync).toHaveBeenCalled(); + expect(dialog.showOpenDialog).toHaveBeenCalled(); }); }); @@ -293,7 +305,7 @@ describe('files', () => { }); await saveFiddleAs(); - expect(dialog.showOpenDialogSync).toHaveBeenCalled(); + expect(dialog.showOpenDialog).toHaveBeenCalled(); }); }); @@ -305,7 +317,7 @@ describe('files', () => { }); await saveFiddleAsForgeProject(); - expect(dialog.showOpenDialogSync).toHaveBeenCalled(); + expect(dialog.showOpenDialog).toHaveBeenCalled(); }); it('uses the forge transform', async () => { diff --git a/tests/mocks/electron.ts b/tests/mocks/electron.ts index baf6f28a4d..6436fb2aa4 100644 --- a/tests/mocks/electron.ts +++ b/tests/mocks/electron.ts @@ -187,7 +187,6 @@ const electronMock = { }, dialog: { showOpenDialog: jest.fn().mockResolvedValue({}), - showOpenDialogSync: jest.fn().mockReturnValue(['path']), showMessageBox: jest.fn().mockResolvedValue({}), }, ipcMain: new IPCMainMock(),