summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jest.config.js2
-rw-r--r--package-lock.json35
-rw-r--r--package.json1
-rw-r--r--src/__mocks__/axios.js4
-rw-r--r--src/components/LeftSidebar/ConversationsList/Conversation.spec.js8
-rw-r--r--src/services/conversationsService.spec.js10
-rw-r--r--src/services/filesSharingServices.spec.js10
-rw-r--r--src/services/messagesService.spec.js40
-rw-r--r--src/views/RoomSelector.spec.js45
9 files changed, 63 insertions, 92 deletions
diff --git a/jest.config.js b/jest.config.js
index 3c5803c2f..043b7df10 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -82,6 +82,8 @@ module.exports = {
moduleNameMapper: {
'\\.(css|scss)$': 'jest-transform-stub',
'vendor/tflite/(.*).wasm$': '<rootDir>/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: '<rootDir>/node_modules/@nextcloud/axios/node_modules/axios/dist/node/axios.cjs',
},
transform: {
diff --git a/package-lock.json b/package-lock.json
index a3ae10cf3..18167ff57 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -71,7 +71,6 @@
"jest": "^29.5.0",
"jest-environment-jsdom": "^29.5.0",
"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",
@@ -11081,17 +11080,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-console": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/jest-mock-console/-/jest-mock-console-2.0.0.tgz",
@@ -16124,12 +16112,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",
@@ -26332,17 +26314,6 @@
"jest-util": "^29.5.0"
}
},
- "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"
- }
- },
"jest-mock-console": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/jest-mock-console/-/jest-mock-console-2.0.0.tgz",
@@ -30096,12 +30067,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 2d4f31653..50e21256f 100644
--- a/package.json
+++ b/package.json
@@ -80,7 +80,6 @@
"jest": "^29.5.0",
"jest-environment-jsdom": "^29.5.0",
"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 a5a828b30..000000000
--- 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 1222bd90f..5ae85985c 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 007646a69..8290ab1ad 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 d41e77b8b..b06f7633b 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 2828e0d07..d21695c1c 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 fd9960058..e1124d445 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()