From e8960cb81d148d99565341377837d43ce39f363d Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 14 Oct 2024 07:06:23 +0200 Subject: [PATCH] fix(test): mock getClientRect Also move mocks from setup.mjs into testHelpers. Signed-off-by: Max --- src/tests/setup.mjs | 87 ++----------------------- src/tests/testHelpers/jsdomMocks.js | 54 +++++++++++++++ src/tests/testHelpers/nextcloudMocks.js | 59 +++++++++++++++++ 3 files changed, 117 insertions(+), 83 deletions(-) create mode 100644 src/tests/testHelpers/jsdomMocks.js create mode 100644 src/tests/testHelpers/nextcloudMocks.js diff --git a/src/tests/setup.mjs b/src/tests/setup.mjs index 5445df76d0..d3a07b378f 100644 --- a/src/tests/setup.mjs +++ b/src/tests/setup.mjs @@ -4,89 +4,10 @@ */ import Vue from 'vue' - -global.t = vi.fn().mockImplementation((app, text) => text) -global.n = vi.fn().mockImplementation((app, text) => text) - -vi.mock('@nextcloud/auth', () => ({ - getCurrentUser: vi.fn().mockImplementation(() => ({ - uid: 'user1', - displayName: 'User 1', - isAdmin: false, - })), - getRequestToken: vi.fn().mockImplementation(() => '123456abcdef'), - onRequestTokenUpdate: vi.fn().mockImplementation(() => {}), -})) - -vi.mock('@nextcloud/files', () => ({ - formatFileSize: (size) => size, - Header: class {}, -})) -vi.mock('@nextcloud/dialogs', () => ({ - FilePickerType: {}, - getFilePickerBuilder: () => {}, -})) - -global.OC = { - requestToken: '123', - coreApps: [ - 'core', - ], - config: { - modRewriteWorking: true, - }, - dialogs: { - }, - isUserAdmin() { - return true - }, - getLanguage() { - return 'en-GB' - }, - getLocale() { - return 'en_GB' - }, - - MimeType: { - getIconUrl: vi.fn(), - }, - L10N: { - translate: global.t, - }, -} - -global.OCA = {} -global._oc_webroot = '' +import './testHelpers/jsdomMocks.js' +import './testHelpers/nextcloudMocks.js' Vue.prototype.t = global.t Vue.prototype.n = global.n -Vue.prototype.OC = OC -Vue.prototype.OCA = OCA - -// Mock ClipboardEvent and DragEvent as long as jsdom is used -// https://github.com/ueberdosis/tiptap/issues/4455 -class ClipboardEventMock extends Event { - - constructor(type, eventInitDict) { - super(type, eventInitDict) - this.clipboardData = { - getData: vi.fn(), - setData: vi.fn(), - } - } - -} -global.ClipboardEvent = ClipboardEventMock - -class DragEventMock extends Event { - - constructor(type, eventInitDict) { - super(type, eventInitDict) - this.dataTransfer = { - getData: vi.fn(), - setData: vi.fn(), - } - } - -} -global.DragEvent = DragEventMock +Vue.prototype.OC = global.OC +Vue.prototype.OCA = global.OCA diff --git a/src/tests/testHelpers/jsdomMocks.js b/src/tests/testHelpers/jsdomMocks.js new file mode 100644 index 0000000000..1a310cebc4 --- /dev/null +++ b/src/tests/testHelpers/jsdomMocks.js @@ -0,0 +1,54 @@ +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +// Mocks for browser APIs missing in jsdom + +import { vi } from 'vitest' + +// Mock ClipboardEvent and DragEvent as long as jsdom is used +// https://github.com/ueberdosis/tiptap/issues/4455 + +class ClipboardEventMock extends Event { + + constructor(type, eventInitDict) { + super(type, eventInitDict) + this.clipboardData = { + getData: vi.fn(), + setData: vi.fn(), + } + } + +} + +global.ClipboardEvent = ClipboardEventMock + +class DragEventMock extends Event { + + constructor(type, eventInitDict) { + super(type, eventInitDict) + this.dataTransfer = { + getData: vi.fn(), + setData: vi.fn(), + } + } + +} +global.DragEvent = DragEventMock + +// https://github.com/jsdom/jsdom/issues/3002 +Range.prototype.getBoundingClientRect = vi.fn() +Range.prototype.getBoundingClientRect.mockReturnValue({ + bottom: 0, + height: 0, + left: 0, + right: 0, + top: 0, + width: 0, +}) +Range.prototype.getClientRects = () => ({ + item: vi.fn(), + length: 0, + [Symbol.iterator]: vi.fn(), +}) diff --git a/src/tests/testHelpers/nextcloudMocks.js b/src/tests/testHelpers/nextcloudMocks.js new file mode 100644 index 0000000000..f9f65cdabc --- /dev/null +++ b/src/tests/testHelpers/nextcloudMocks.js @@ -0,0 +1,59 @@ +/** + * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { vi } from 'vitest' + +global.t = vi.fn().mockImplementation((app, text) => text) +global.n = vi.fn().mockImplementation((app, text) => text) + +vi.mock('@nextcloud/auth', () => ({ + getCurrentUser: vi.fn().mockImplementation(() => ({ + uid: 'user1', + displayName: 'User 1', + isAdmin: false, + })), + getRequestToken: vi.fn().mockImplementation(() => '123456abcdef'), + onRequestTokenUpdate: vi.fn().mockImplementation(() => {}), +})) + +vi.mock('@nextcloud/files', () => ({ + formatFileSize: (size) => size, + Header: class {}, +})) +vi.mock('@nextcloud/dialogs', () => ({ + FilePickerType: {}, + getFilePickerBuilder: () => {}, +})) + +global.OC = { + requestToken: '123', + coreApps: [ + 'core', + ], + config: { + modRewriteWorking: true, + }, + dialogs: { + }, + isUserAdmin() { + return true + }, + getLanguage() { + return 'en-GB' + }, + getLocale() { + return 'en_GB' + }, + + MimeType: { + getIconUrl: vi.fn(), + }, + L10N: { + translate: global.t, + }, +} + +global.OCA = {} +global._oc_webroot = ''