diff options
author | fenn-cs <fenn25.fn@gmail.com> | 2024-07-31 10:24:14 +0100 |
---|---|---|
committer | fenn-cs <fenn25.fn@gmail.com> | 2024-07-31 10:28:05 +0100 |
commit | efcf98d923625e9565004e25cbacefb853d9242d (patch) | |
tree | 6f1751610bfe26a94a2273a2f5909a3af5323bd4 | |
parent | 267ae6f97cf25b0e4bd971a47d12c417318a6427 (diff) | |
download | nextcloud-server-efcf98d923625e9565004e25cbacefb853d9242d.tar.gz nextcloud-server-efcf98d923625e9565004e25cbacefb853d9242d.zip |
fix: Adjust tests for editLocallyAction
Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
-rw-r--r-- | apps/files/src/actions/editLocallyAction.spec.ts | 43 | ||||
-rw-r--r-- | apps/files/src/actions/editLocallyAction.ts | 2 |
2 files changed, 34 insertions, 11 deletions
diff --git a/apps/files/src/actions/editLocallyAction.spec.ts b/apps/files/src/actions/editLocallyAction.spec.ts index 7131cb86f16..ca2e1d05f96 100644 --- a/apps/files/src/actions/editLocallyAction.spec.ts +++ b/apps/files/src/actions/editLocallyAction.spec.ts @@ -5,9 +5,23 @@ import { action } from './editLocallyAction' import { expect } from '@jest/globals' import { File, Permission, View, FileAction } from '@nextcloud/files' -import * as ncDialogs from '@nextcloud/dialogs' +import { DialogBuilder, showError } from '@nextcloud/dialogs' import axios from '@nextcloud/axios' +const dialogBuilder = { + setName: jest.fn().mockReturnThis(), + setText: jest.fn().mockReturnThis(), + setButtons: jest.fn().mockReturnThis(), + build: jest.fn().mockReturnValue({ + show: jest.fn().mockResolvedValue(true), + }), +} as unknown as DialogBuilder + +jest.mock('@nextcloud/dialogs', () => ({ + DialogBuilder: jest.fn(() => dialogBuilder), + showError: jest.fn(), +})) + const view = { id: 'files', name: 'Files', @@ -16,7 +30,8 @@ const view = { // Mock webroot variable beforeAll(() => { // eslint-disable-next-line @typescript-eslint/no-explicit-any - (window as any)._oc_webroot = '' + (window as any)._oc_webroot = ''; + (window as any).OCA = { Viewer: { open: jest.fn() } } }) describe('Edit locally action conditions tests', () => { @@ -44,7 +59,7 @@ describe('Edit locally action enabled tests', () => { expect(action.enabled!([file], view)).toBe(true) }) - test('Disabled for non-dav ressources', () => { + test('Disabled for non-dav resources', () => { const file = new File({ id: 1, source: 'https://domain.com/data/foobar.txt', @@ -104,8 +119,11 @@ describe('Edit locally action enabled tests', () => { describe('Edit locally action execute tests', () => { test('Edit locally opens proper URL', async () => { - jest.spyOn(axios, 'post').mockImplementation(async () => ({ data: { ocs: { data: { token: 'foobar' } } } })) - jest.spyOn(ncDialogs, 'showError') + jest.spyOn(axios, 'post').mockImplementation(async () => ({ + data: { ocs: { data: { token: 'foobar' } } } + })) + const mockedShowError = jest.mocked(showError) + const spyDialogBuilder = jest.spyOn(dialogBuilder, 'build') const file = new File({ id: 1, @@ -117,17 +135,20 @@ describe('Edit locally action execute tests', () => { const exec = await action.exec(file, view, '/') + expect(spyDialogBuilder).toBeCalled() + // Silent action expect(exec).toBe(null) expect(axios.post).toBeCalledTimes(1) expect(axios.post).toBeCalledWith('http://localhost/ocs/v2.php/apps/files/api/v1/openlocaleditor?format=json', { path: '/foobar.txt' }) - expect(ncDialogs.showError).toBeCalledTimes(0) + expect(mockedShowError).toBeCalledTimes(0) expect(window.location.href).toBe('nc://open/test@localhost/foobar.txt?token=foobar') }) - test('Edit locally fails and show error', async () => { + test('Edit locally fails and shows error', async () => { jest.spyOn(axios, 'post').mockImplementation(async () => ({})) - jest.spyOn(ncDialogs, 'showError') + const mockedShowError = jest.mocked(showError) + const spyDialogBuilder = jest.spyOn(dialogBuilder, 'build') const file = new File({ id: 1, @@ -139,12 +160,14 @@ describe('Edit locally action execute tests', () => { const exec = await action.exec(file, view, '/') + expect(spyDialogBuilder).toBeCalled() + // Silent action expect(exec).toBe(null) expect(axios.post).toBeCalledTimes(1) expect(axios.post).toBeCalledWith('http://localhost/ocs/v2.php/apps/files/api/v1/openlocaleditor?format=json', { path: '/foobar.txt' }) - expect(ncDialogs.showError).toBeCalledTimes(1) - expect(ncDialogs.showError).toBeCalledWith('Failed to redirect to client') + expect(mockedShowError).toBeCalledTimes(1) + expect(mockedShowError).toBeCalledWith('Failed to redirect to client') expect(window.location.href).toBe('http://localhost/') }) }) diff --git a/apps/files/src/actions/editLocallyAction.ts b/apps/files/src/actions/editLocallyAction.ts index 10eebb8a852..a2ffd6f054d 100644 --- a/apps/files/src/actions/editLocallyAction.ts +++ b/apps/files/src/actions/editLocallyAction.ts @@ -45,7 +45,7 @@ const confirmLocalEditDialog = ( .then(() => { // Ensure the callback is called even if the dialog is dismissed in other ways if (!callbackCalled) { - localEditCallback(true) + localEditCallback(false) } }) } |