summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDevlin Junker <devlin.junker@gmail.com>2023-09-26 15:54:33 -0700
committerDevlin Junker <devlin.junker@gmail.com>2023-09-26 15:54:33 -0700
commitba9d512239eb5ed9b80648cfde291d483e6e390e (patch)
tree5fb8751d6698fb009c5ec03be189e14b7b3b3685 /tests
parent74eb3150e204f79053e6a6a7ad35b0b6f91c3fde (diff)
tests
Signed-off-by: Devlin Junker <devlin.junker@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/javascript/unit/components/ShareItem.spec.ts75
-rw-r--r--tests/javascript/unit/components/feed-display/FeedItemRow.spec.ts4
-rw-r--r--tests/javascript/unit/services/share.service.spec.ts46
3 files changed, 123 insertions, 2 deletions
diff --git a/tests/javascript/unit/components/ShareItem.spec.ts b/tests/javascript/unit/components/ShareItem.spec.ts
new file mode 100644
index 000000000..f61c9e82b
--- /dev/null
+++ b/tests/javascript/unit/components/ShareItem.spec.ts
@@ -0,0 +1,75 @@
+import { shallowMount, createLocalVue } from '@vue/test-utils'
+import ShareItem from '../../../../src/components/ShareItem.vue'
+import { ShareService } from '../../../../src/dataservices/share.service'
+
+describe('AddFeed.vue', () => {
+ 'use strict'
+
+ let wrapper: any
+ beforeEach(() => {
+ const localVue = createLocalVue()
+ wrapper = shallowMount(ShareItem, {
+ localVue,
+ propsData: {
+ itemId: 123,
+ },
+ })
+ })
+
+ describe('clickUser()', () => {
+ it('should add to selected if user not selected before', () => {
+ wrapper.vm.selected = []
+
+ wrapper.vm.clickUser({ displayName: 'display', shareName: 'share' })
+
+ expect(wrapper.vm.selected.length).toEqual(1)
+ })
+
+ it('should remove from selected if user is selected before', () => {
+ wrapper.vm.selected = [{ displayName: 'display', shareName: 'share' }]
+
+ wrapper.vm.clickUser({ displayName: 'display', shareName: 'share' })
+
+ expect(wrapper.vm.selected.length).toEqual(0)
+ })
+ })
+
+ describe('searchUsers()', () => {
+ it('should call ShareService to fetch users to add to user (display) list', async () => {
+ ShareService.fetchUsers = jest.fn().mockReturnValue({
+ data: {
+ ocs: {
+ data: {
+ users: [],
+ },
+ },
+ },
+ })
+ wrapper.vm.userName = 'search'
+
+ await wrapper.vm.searchUsers()
+
+ expect(ShareService.fetchUsers).toBeCalled()
+ })
+ })
+
+ describe('share()', () => {
+ it('should call ShareService to share article id with backend', async () => {
+ ShareService.share = jest.fn()
+ wrapper.vm.selected = [{ displayName: 'display', shareName: 'share' }]
+
+ await wrapper.vm.share()
+
+ expect(ShareService.share).toBeCalled()
+
+ wrapper.vm.selected = [{ displayName: 'display', shareName: 'share' }, { displayName: 'display2', shareName: 'share2' }]
+
+ await wrapper.vm.share()
+
+ let args = (ShareService.share as any).mock.calls[0]
+ expect(args[1]).toEqual(['share'])
+ args = (ShareService.share as any).mock.calls[1]
+ expect(args[1]).toEqual(['share', 'share2'])
+ })
+ })
+})
diff --git a/tests/javascript/unit/components/feed-display/FeedItemRow.spec.ts b/tests/javascript/unit/components/feed-display/FeedItemRow.spec.ts
index d6aa2cd9d..8c4b23042 100644
--- a/tests/javascript/unit/components/feed-display/FeedItemRow.spec.ts
+++ b/tests/javascript/unit/components/feed-display/FeedItemRow.spec.ts
@@ -68,13 +68,13 @@ describe('FeedItemRow.vue', () => {
let relativeTimestamp = (wrapper.vm as any).getRelativeTimestamp(pastTimestamp)
- expect(relativeTimestamp).toEqual('10 seconds')
+ expect(relativeTimestamp).toEqual('{num} seconds')
pastTimestamp = currentTimestamp - 1000 * 60 * 10 // 10 minutes ago
relativeTimestamp = (wrapper.vm as any).getRelativeTimestamp(pastTimestamp)
- expect(relativeTimestamp).toEqual('10 minutes ago')
+ expect(relativeTimestamp).toEqual('{num} minutes ago')
})
it('should retrieve feed by ID', () => {
diff --git a/tests/javascript/unit/services/share.service.spec.ts b/tests/javascript/unit/services/share.service.spec.ts
new file mode 100644
index 000000000..678c0eebf
--- /dev/null
+++ b/tests/javascript/unit/services/share.service.spec.ts
@@ -0,0 +1,46 @@
+import { ShareService } from './../../../../src/dataservices/share.service'
+import axios from '@nextcloud/axios'
+
+jest.mock('@nextcloud/axios')
+
+describe('share.service.ts', () => {
+ 'use strict'
+
+ beforeEach(() => {
+ (axios.get as any).mockReset();
+ (axios.post as any).mockReset()
+ })
+
+ describe('fetchUsers', () => {
+ it('should call GET to retrieve users', async () => {
+ (axios as any).get.mockResolvedValue({ data: { feeds: [] } })
+
+ await ShareService.fetchUsers('abc')
+
+ expect(axios.get).toBeCalled()
+ const args = (axios.get as any).mock.calls[0]
+
+ expect(args[0]).toContain('search=abc')
+ })
+ })
+
+ describe('share', () => {
+ it('should call POST for each user passed', async () => {
+ await ShareService.share(123, ['share-user'])
+
+ expect(axios.post).toBeCalledTimes(1)
+ let args = (axios.post as any).mock.calls[0]
+
+ expect(args[0]).toContain('123/share/share-user')
+
+ await ShareService.share(345, ['share-user', 'share2'])
+
+ expect(axios.post).toBeCalledTimes(3)
+
+ args = (axios.post as any).mock.calls[1]
+ expect(args[0]).toContain('345/share/share-user')
+ args = (axios.post as any).mock.calls[2]
+ expect(args[0]).toContain('345/share/share2')
+ })
+ })
+})