Welcome to mirror list, hosted at ThFree Co, Russian Federation.

conversationsService.spec.js « services « src - github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e07d7382b4b19ab4dc784a479a6536500101db2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import mockAxios from '../__mocks__/axios.js'
import { generateOcsUrl } from '@nextcloud/router'
import { loadState } from '@nextcloud/initial-state'
import { searchPossibleConversations } from './conversationsService.js'
import { SHARE } from '../constants.js'

jest.mock('@nextcloud/initial-state', () => ({
	loadState: jest.fn(),
}))

describe('conversationsService', () => {
	let loadStateSettings

	beforeEach(() => {
		loadStateSettings = {
			federation_enabled: false,
		}

		loadState.mockImplementation((app, key) => {
			if (app === 'spreed') {
				return loadStateSettings[key]
			}
			return null
		})
	})

	afterEach(() => {
		// cleaning up the mess left behind the previous test
		mockAxios.reset()
	})

	/**
	 * @param {string} token The conversation to search in
	 * @param {boolean} onlyUsers Whether or not to only search for users
	 * @param {Array} expectedShareTypes The expected search types to look for
	 */
	function testSearchPossibleConversations(token, onlyUsers, expectedShareTypes) {
		searchPossibleConversations(
			{
				searchText: 'search-text',
				token,
				onlyUsers,
			},
			{
				dummyOption: true,
			}
		)
		expect(mockAxios.get).toHaveBeenCalledWith(
			generateOcsUrl('core/autocomplete/get'),
			{
				dummyOption: true,
				params: {
					itemId: token,
					itemType: 'call',
					search: 'search-text',
					shareTypes: expectedShareTypes,
				},
			}
		)
	}

	test('searchPossibleConversations with only users', () => {
		testSearchPossibleConversations(
			'conversation-token',
			true,
			[
				SHARE.TYPE.USER,
			],
		)
	})

	test('searchPossibleConversations with other share types', () => {
		testSearchPossibleConversations(
			'conversation-token',
			false,
			[
				SHARE.TYPE.USER,
				SHARE.TYPE.GROUP,
				SHARE.TYPE.CIRCLE,
				SHARE.TYPE.EMAIL,
			],
		)
	})

	test('searchPossibleConversations with other share types and a new token', () => {
		testSearchPossibleConversations(
			'new',
			false,
			[
				SHARE.TYPE.USER,
				SHARE.TYPE.GROUP,
				SHARE.TYPE.CIRCLE,
			],
		)
	})
})