diff --git a/jest.config.js b/jest.config.js index 3c5803c2fea..043b7df10d8 100644 --- a/jest.config.js +++ b/jest.config.js @@ -82,6 +82,8 @@ module.exports = { moduleNameMapper: { '\\.(css|scss)$': 'jest-transform-stub', 'vendor/tflite/(.*).wasm$': '/src/utils/media/effects/virtual-background/vendor/tflite/$1.js', + // Axios using ESM since v1.0.0, so we need to replace it with CJS for tests + axios: '/node_modules/@nextcloud/axios/node_modules/axios/dist/node/axios.cjs', }, transform: { diff --git a/package-lock.json b/package-lock.json index ab6db3a63cb..4ef79fca8a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@linusborg/vue-simple-portal": "^0.1.5", "@nextcloud/auth": "^2.1.0", - "@nextcloud/axios": "^2.3.0", + "@nextcloud/axios": "^2.4.0", "@nextcloud/browser-storage": "^0.2.0", "@nextcloud/capabilities": "^1.1.0", "@nextcloud/dialogs": "^4.1.0", @@ -76,7 +76,6 @@ "jest": "^29.6.1", "jest-environment-jsdom": "^29.6.1", "jest-localstorage-mock": "^2.4.26", - "jest-mock-axios": "^4.7.2", "jest-mock-console": "^2.0.0", "jest-transform-stub": "^2.0.0", "regenerator-runtime": "^0.13.11", @@ -2770,24 +2769,28 @@ } }, "node_modules/@nextcloud/axios": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.3.0.tgz", - "integrity": "sha512-C/M+1Rnh2RJwe9o5eqTDDSRbgLoD8UI0g+O1HszdQcAz+WizGiRzqnPdXYt7vWkorXvwwM0uu37pm6AlG4OmQQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.4.0.tgz", + "integrity": "sha512-ARGzT9p45L0sjRIV3JZWGPtMbwgxd4eEMcMJNn58NA7UQIsMkTwHb5pXQjL+5elXY9zp/JMz7n/7SHTp0bkuXQ==", "dependencies": { - "@nextcloud/auth": "^2.0.0", - "@nextcloud/router": "^2.0.0", - "axios": "^0.27.2", - "tslib": "^2.4.1" + "@nextcloud/auth": "^2.1.0", + "@nextcloud/router": "^2.1.2", + "axios": "^1.4.0" }, "engines": { - "node": "^16.0.0", - "npm": "^7.0.0 || ^8.0.0" + "node": "^20.0.0", + "npm": "^9.0.0" } }, - "node_modules/@nextcloud/axios/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "node_modules/@nextcloud/axios/node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } }, "node_modules/@nextcloud/babel-config": { "version": "1.0.0", @@ -8970,9 +8973,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "funding": [ { "type": "individual", @@ -11413,43 +11416,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-mock-axios": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/jest-mock-axios/-/jest-mock-axios-4.7.2.tgz", - "integrity": "sha512-8xrkCuEsscOLSw4Noi40Pq5tQMlKg3tbDZ0XNkf3Mv0Yq+z6+qS2tToimNs/3RIsEzoPXHTf2+mcySaNaYXIyw==", - "dev": true, - "dependencies": { - "@jest/globals": "^29.5.0", - "jest": "~29.5.0", - "synchronous-promise": "^2.0.17" - } - }, - "node_modules/jest-mock-axios/node_modules/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, "node_modules/jest-mock-console": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jest-mock-console/-/jest-mock-console-2.0.0.tgz", @@ -14423,6 +14389,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -16557,12 +16528,6 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "node_modules/synchronous-promise": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", - "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==", - "dev": true - }, "node_modules/tabbable": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.0.1.tgz", @@ -20780,20 +20745,24 @@ } }, "@nextcloud/axios": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.3.0.tgz", - "integrity": "sha512-C/M+1Rnh2RJwe9o5eqTDDSRbgLoD8UI0g+O1HszdQcAz+WizGiRzqnPdXYt7vWkorXvwwM0uu37pm6AlG4OmQQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@nextcloud/axios/-/axios-2.4.0.tgz", + "integrity": "sha512-ARGzT9p45L0sjRIV3JZWGPtMbwgxd4eEMcMJNn58NA7UQIsMkTwHb5pXQjL+5elXY9zp/JMz7n/7SHTp0bkuXQ==", "requires": { - "@nextcloud/auth": "^2.0.0", - "@nextcloud/router": "^2.0.0", - "axios": "^0.27.2", - "tslib": "^2.4.1" + "@nextcloud/auth": "^2.1.0", + "@nextcloud/router": "^2.1.2", + "axios": "^1.4.0" }, "dependencies": { - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } } } }, @@ -25606,9 +25575,9 @@ } }, "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" }, "for-each": { "version": "0.3.3", @@ -27343,31 +27312,6 @@ "jest-util": "^29.6.1" } }, - "jest-mock-axios": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/jest-mock-axios/-/jest-mock-axios-4.7.2.tgz", - "integrity": "sha512-8xrkCuEsscOLSw4Noi40Pq5tQMlKg3tbDZ0XNkf3Mv0Yq+z6+qS2tToimNs/3RIsEzoPXHTf2+mcySaNaYXIyw==", - "dev": true, - "requires": { - "@jest/globals": "^29.5.0", - "jest": "~29.5.0", - "synchronous-promise": "^2.0.17" - }, - "dependencies": { - "jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "requires": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - } - } - } - }, "jest-mock-console": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jest-mock-console/-/jest-mock-console-2.0.0.tgz", @@ -29540,6 +29484,11 @@ } } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -31185,12 +31134,6 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "synchronous-promise": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", - "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==", - "dev": true - }, "tabbable": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.0.1.tgz", diff --git a/package.json b/package.json index fae7c6246e3..51af02d99ce 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "dependencies": { "@linusborg/vue-simple-portal": "^0.1.5", "@nextcloud/auth": "^2.1.0", - "@nextcloud/axios": "^2.3.0", + "@nextcloud/axios": "^2.4.0", "@nextcloud/browser-storage": "^0.2.0", "@nextcloud/capabilities": "^1.1.0", "@nextcloud/dialogs": "^4.1.0", @@ -85,7 +85,6 @@ "jest": "^29.6.1", "jest-environment-jsdom": "^29.6.1", "jest-localstorage-mock": "^2.4.26", - "jest-mock-axios": "^4.7.2", "jest-mock-console": "^2.0.0", "jest-transform-stub": "^2.0.0", "regenerator-runtime": "^0.13.11", diff --git a/src/__mocks__/axios.js b/src/__mocks__/axios.js deleted file mode 100644 index a5a828b30e0..00000000000 --- a/src/__mocks__/axios.js +++ /dev/null @@ -1,4 +0,0 @@ -// eslint-disable-next-line n/no-unpublished-import -import mockAxios from 'jest-mock-axios' - -export default mockAxios diff --git a/src/components/LeftSidebar/ConversationsList/Conversation.spec.js b/src/components/LeftSidebar/ConversationsList/Conversation.spec.js index 1222bd90fb5..5ae85985c65 100644 --- a/src/components/LeftSidebar/ConversationsList/Conversation.spec.js +++ b/src/components/LeftSidebar/ConversationsList/Conversation.spec.js @@ -13,6 +13,7 @@ import Conversation from './Conversation.vue' import router from '../../../__mocks__/router.js' import { CONVERSATION, PARTICIPANT, ATTENDEE } from '../../../constants.js' +import { leaveConversation } from '../../../services/participantsService.js' import storeConfig from '../../../store/storeConfig.js' jest.mock('@nextcloud/dialogs', () => ({ @@ -20,6 +21,10 @@ jest.mock('@nextcloud/dialogs', () => ({ showError: jest.fn(), })) +jest.mock('../../../services/participantsService', () => ({ + leaveConversation: jest.fn(), +})) + // TODO fix after RouterLinkStub can support slots https://github.com/vuejs/vue-test-utils/issues/1803 const RouterLinkStub = true @@ -357,11 +362,12 @@ describe('Conversation.vue', () => { test('leaves conversation', async () => { const actionHandler = jest.fn() testStoreConfig.modules.participantsStore.actions.removeCurrentUserFromConversation = actionHandler - + leaveConversation.mockResolvedValue() const action = shallowMountAndGetAction('Leave conversation') expect(action.exists()).toBe(true) await action.find('button').trigger('click') + await flushPromises() expect(actionHandler).toHaveBeenCalledWith(expect.anything(), { token: TOKEN }) }) diff --git a/src/services/conversationsService.spec.js b/src/services/conversationsService.spec.js index 007646a694c..8290ab1ad0f 100644 --- a/src/services/conversationsService.spec.js +++ b/src/services/conversationsService.spec.js @@ -1,10 +1,14 @@ +import axios from '@nextcloud/axios' import { loadState } from '@nextcloud/initial-state' import { generateOcsUrl } from '@nextcloud/router' -import mockAxios from '../__mocks__/axios.js' import { SHARE } from '../constants.js' import { searchPossibleConversations } from './conversationsService.js' +jest.mock('@nextcloud/axios', () => ({ + get: jest.fn(), +})) + jest.mock('@nextcloud/initial-state', () => ({ loadState: jest.fn(), })) @@ -27,7 +31,7 @@ describe('conversationsService', () => { afterEach(() => { // cleaning up the mess left behind the previous test - mockAxios.reset() + jest.clearAllMocks() }) /** @@ -46,7 +50,7 @@ describe('conversationsService', () => { dummyOption: true, } ) - expect(mockAxios.get).toHaveBeenCalledWith( + expect(axios.get).toHaveBeenCalledWith( generateOcsUrl('core/autocomplete/get'), { dummyOption: true, diff --git a/src/services/filesSharingServices.spec.js b/src/services/filesSharingServices.spec.js index d41e77b8bb5..b06f7633b02 100644 --- a/src/services/filesSharingServices.spec.js +++ b/src/services/filesSharingServices.spec.js @@ -1,18 +1,22 @@ +import axios from '@nextcloud/axios' import { generateOcsUrl } from '@nextcloud/router' -import mockAxios from '../__mocks__/axios.js' import { shareFile } from './filesSharingServices.js' +jest.mock('@nextcloud/axios', () => ({ + post: jest.fn(), +})) + describe('filesSharingServices', () => { afterEach(() => { // cleaning up the mess left behind the previous test - mockAxios.reset() + jest.clearAllMocks() }) test('shareFile calls the sharing API endpoint', () => { shareFile('path/to/file', 'XXTOKENXX', 'the-reference-id') - expect(mockAxios.post).toHaveBeenCalledWith( + expect(axios.post).toHaveBeenCalledWith( generateOcsUrl('apps/files_sharing/api/v1/shares'), { shareType: 10, diff --git a/src/services/messagesService.spec.js b/src/services/messagesService.spec.js index 2828e0d07e6..d21695c1c5a 100644 --- a/src/services/messagesService.spec.js +++ b/src/services/messagesService.spec.js @@ -1,6 +1,6 @@ +import axios from '@nextcloud/axios' import { generateOcsUrl } from '@nextcloud/router' -import mockAxios from '../__mocks__/axios.js' import { fetchMessages, lookForNewMessages, @@ -10,10 +10,16 @@ import { updateLastReadMessage, } from './messagesService.js' +jest.mock('@nextcloud/axios', () => ({ + get: jest.fn(), + post: jest.fn(), + delete: jest.fn(), +})) + describe('messagesService', () => { afterEach(() => { // cleaning up the mess left behind the previous test - mockAxios.reset() + jest.clearAllMocks() }) test('fetchMessages calls the chat API endpoint excluding last known', () => { @@ -25,7 +31,7 @@ describe('messagesService', () => { dummyOption: true, }) - expect(mockAxios.get).toHaveBeenCalledWith( + expect(axios.get).toHaveBeenCalledWith( generateOcsUrl('apps/spreed/api/v1/chat/XXTOKENXX'), { dummyOption: true, @@ -49,7 +55,7 @@ describe('messagesService', () => { dummyOption: true, }) - expect(mockAxios.get).toHaveBeenCalledWith( + expect(axios.get).toHaveBeenCalledWith( generateOcsUrl('apps/spreed/api/v1/chat/XXTOKENXX'), { dummyOption: true, @@ -72,7 +78,7 @@ describe('messagesService', () => { dummyOption: true, }) - expect(mockAxios.get).toHaveBeenCalledWith( + expect(axios.get).toHaveBeenCalledWith( generateOcsUrl('apps/spreed/api/v1/chat/XXTOKENXX'), { dummyOption: true, @@ -97,7 +103,7 @@ describe('messagesService', () => { dummyOption: true, }) - expect(mockAxios.post).toHaveBeenCalledWith( + expect(axios.post).toHaveBeenCalledWith( generateOcsUrl('apps/spreed/api/v1/chat/XXTOKENXX'), { message: 'hello world!', @@ -117,7 +123,7 @@ describe('messagesService', () => { id: 1234, }) - expect(mockAxios.delete).toHaveBeenCalledWith( + expect(axios.delete).toHaveBeenCalledWith( generateOcsUrl('apps/spreed/api/v1/chat/XXTOKENXX/1234'), ) }) @@ -130,7 +136,7 @@ describe('messagesService', () => { referenceId: 'reference-id', }) - expect(mockAxios.post).toHaveBeenCalledWith( + expect(axios.post).toHaveBeenCalledWith( generateOcsUrl('apps/spreed/api/v1/chat/XXTOKENXX/share'), { objectType: 'deck', @@ -148,19 +154,21 @@ describe('messagesService', () => { metaData: '{"x":1}', }) - const lastReq = mockAxios.lastReqGet() - expect(lastReq.url) - .toBe(generateOcsUrl('apps/spreed/api/v1/chat/XXTOKENXX/share')) - expect(lastReq.data.objectType).toBe('deck') - expect(lastReq.data.objectId).toBe(999) - expect(lastReq.data.metaData).toBe('{"x":1}') - expect(lastReq.data.referenceId).toEqual(expect.stringMatching(/^[a-z0-9]{64}$/)) + expect(axios.post).toHaveBeenCalledWith( + generateOcsUrl('apps/spreed/api/v1/chat/XXTOKENXX/share'), + { + objectType: 'deck', + objectId: 999, + metaData: '{"x":1}', + referenceId: expect.stringMatching(/^[a-z0-9]{64}$/), + } + ) }) test('updateLastReadMessage calls the chat API endpoint', () => { updateLastReadMessage('XXTOKENXX', 1234) - expect(mockAxios.post).toHaveBeenCalledWith( + expect(axios.post).toHaveBeenCalledWith( generateOcsUrl('apps/spreed/api/v1/chat/XXTOKENXX/read'), { lastReadMessage: 1234, diff --git a/src/views/RoomSelector.spec.js b/src/views/RoomSelector.spec.js index fd9960058e9..e1124d445aa 100644 --- a/src/views/RoomSelector.spec.js +++ b/src/views/RoomSelector.spec.js @@ -1,14 +1,18 @@ import { shallowMount } from '@vue/test-utils' +import axios from '@nextcloud/axios' import { generateOcsUrl } from '@nextcloud/router' import NcButton from '@nextcloud/vue/dist/Components/NcButton.js' import RoomSelector from './RoomSelector.vue' -import mockAxios from '../__mocks__/axios.js' import { CONVERSATION } from '../constants.js' +jest.mock('@nextcloud/axios', () => ({ + get: jest.fn(), +})) + describe('RoomSelector.vue', () => { let conversations @@ -64,27 +68,26 @@ describe('RoomSelector.vue', () => { }, }, } + + axios.get.mockResolvedValue({ + data: { + ocs: { + data: conversations, + }, + }, + }) }) afterEach(() => { - mockAxios.reset() jest.clearAllMocks() }) test('renders sorted conversation list fetched from server', async () => { const wrapper = shallowMount(RoomSelector) - expect(mockAxios.get).toHaveBeenCalledWith( + expect(axios.get).toHaveBeenCalledWith( generateOcsUrl('/apps/spreed/api/v4/room') ) - mockAxios.mockResponse({ - data: { - ocs: { - data: conversations, - }, - }, - }) - // need to wait for re-render, otherwise the list is not rendered yet await wrapper.vm.$nextTick() @@ -101,18 +104,10 @@ describe('RoomSelector.vue', () => { }, }) - expect(mockAxios.get).toHaveBeenCalledWith( + expect(axios.get).toHaveBeenCalledWith( generateOcsUrl('/apps/spreed/api/v4/room') ) - mockAxios.mockResponse({ - data: { - ocs: { - data: conversations, - }, - }, - }) - // need to wait for re-render, otherwise the list is not rendered yet await wrapper.vm.$nextTick() @@ -124,18 +119,10 @@ describe('RoomSelector.vue', () => { test('emits select event on select', async () => { const wrapper = shallowMount(RoomSelector) - expect(mockAxios.get).toHaveBeenCalledWith( + expect(axios.get).toHaveBeenCalledWith( generateOcsUrl('/apps/spreed/api/v4/room') ) - mockAxios.mockResponse({ - data: { - ocs: { - data: conversations, - }, - }, - }) - await wrapper.vm.$nextTick() const eventHandler = jest.fn()