mattermost-mobile/app/client/rest/integrations.test.ts
Joram Wilander 4fedb846bc
MM-59683 + more - Add tests to client/rest (#8447)
* Add tests to client/rest/users

* Add tests to client/rest/channels

* Add tests to client/rest/posts

* Add tests to client/rest/teams

* Add tests to client/rest/general

* Minor clean-up

* Add tests to client/rest/file

* Add tests to client/rest/threads

* Add tests to client/rest/emojis

* Add tests to client/rest/integrations

* Add tests to client/rest/categories

* Add tests to client/rest/groups

* Add tests to client/rest/channel_bookmark

* Add tests to client/rest/preferences

* Add tests to client/rest/tos

* Add tests to client/rest/nps and client/rest/plugins

* Minor clean-up

* Fix type error with proper client.searchFiles definition

* add more test to cover 100%

* add teamId test

* improve users test

---------

Co-authored-by: Rahim Rahman <rahim.rahman@mattermost.com>
2025-01-07 08:23:28 -05:00

97 lines
3.3 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import TestHelper from '@test/test_helper';
import {buildQueryString} from '@utils/helpers';
import {PER_PAGE_DEFAULT} from './constants';
import type ClientBase from './base';
import type {ClientIntegrationsMix} from './integrations';
describe('ClientIntegrations', () => {
let client: ClientIntegrationsMix & ClientBase;
const teamId = 'team_id';
beforeAll(() => {
client = TestHelper.createClient();
client.doFetch = jest.fn();
});
test('getCommandsList', async () => {
await client.getCommandsList(teamId);
expect(client.doFetch).toHaveBeenCalledWith(
`${client.getCommandsRoute()}?team_id=${teamId}`,
{method: 'get'},
);
});
test('getCommandAutocompleteSuggestionsList', async () => {
const userInput = 'input';
const channelId = 'channel_id';
const rootId = 'root_id';
await client.getCommandAutocompleteSuggestionsList(userInput, teamId, channelId, rootId);
expect(client.doFetch).toHaveBeenCalledWith(
`${client.getTeamRoute(teamId)}/commands/autocomplete_suggestions${buildQueryString({user_input: userInput, team_id: teamId, channel_id: channelId, root_id: rootId})}`,
{method: 'get'},
);
});
test('getAutocompleteCommandsList', async () => {
const page = 1;
const perPage = 10;
await client.getAutocompleteCommandsList(teamId, page, perPage);
expect(client.doFetch).toHaveBeenCalledWith(
`${client.getTeamRoute(teamId)}/commands/autocomplete${buildQueryString({page, per_page: perPage})}`,
{method: 'get'},
);
// Test with default values
await client.getAutocompleteCommandsList(teamId);
expect(client.doFetch).toHaveBeenCalledWith(
`${client.getTeamRoute(teamId)}/commands/autocomplete${buildQueryString({page: 0, per_page: PER_PAGE_DEFAULT})}`,
{method: 'get'},
);
});
test('executeCommand', async () => {
const command = '/command';
const commandArgs = {channel_id: 'channel_id'} as CommandArgs;
await client.executeCommand(command, commandArgs);
expect(client.doFetch).toHaveBeenCalledWith(
`${client.getCommandsRoute()}/execute`,
{method: 'post', body: {command, ...commandArgs}},
);
// Test without commandArgs
await client.executeCommand(command);
expect(client.doFetch).toHaveBeenCalledWith(
`${client.getCommandsRoute()}/execute`,
{method: 'post', body: {command}},
);
});
test('addCommand', async () => {
const command = {id: 'command_id', trigger: 'trigger'} as Command;
await client.addCommand(command);
expect(client.doFetch).toHaveBeenCalledWith(
client.getCommandsRoute(),
{method: 'post', body: command},
);
});
test('submitInteractiveDialog', async () => {
const data = {url: 'data'} as DialogSubmission;
await client.submitInteractiveDialog(data);
expect(client.doFetch).toHaveBeenCalledWith(
`${client.urlVersion}/actions/dialogs/submit`,
{method: 'post', body: data},
);
});
});