aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfenn-cs <fenn25.fn@gmail.com>2024-07-31 10:24:14 +0100
committerfenn-cs <fenn25.fn@gmail.com>2024-07-31 10:28:05 +0100
commitefcf98d923625e9565004e25cbacefb853d9242d (patch)
tree6f1751610bfe26a94a2273a2f5909a3af5323bd4
parent267ae6f97cf25b0e4bd971a47d12c417318a6427 (diff)
downloadnextcloud-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.ts43
-rw-r--r--apps/files/src/actions/editLocallyAction.ts2
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)
}
})
}