mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
152 lines
3.7 KiB
TypeScript
152 lines
3.7 KiB
TypeScript
import type { IHttpRequestMethods, INodeTypes, WorkflowTestData } from 'n8n-workflow';
|
||
|
||
import { getResultNodeData, setup, workflowToTests } from '@test/nodes/Helpers';
|
||
|
||
import { executeWorkflow } from '../../../../../../test/nodes/ExecuteWorkflow';
|
||
import * as genericFunctions from '../../../../V2/GenericFunctions';
|
||
|
||
const API_RESPONSE = {
|
||
ok: true,
|
||
channels: [
|
||
{
|
||
id: 'C0362BX17TM',
|
||
name: 'general',
|
||
is_channel: true,
|
||
is_group: false,
|
||
is_im: false,
|
||
is_mpim: false,
|
||
is_private: false,
|
||
created: 1646724991,
|
||
is_archived: false,
|
||
is_general: true,
|
||
unlinked: 0,
|
||
name_normalized: 'general',
|
||
is_shared: false,
|
||
is_org_shared: false,
|
||
is_pending_ext_shared: false,
|
||
pending_shared: [],
|
||
context_team_id: 'T0364MSFHV2',
|
||
updated: 1734075560630,
|
||
parent_conversation: null,
|
||
creator: 'U0362BXQYJW',
|
||
is_ext_shared: false,
|
||
shared_team_ids: ['T0364MSFHV2'],
|
||
pending_connected_team_ids: [],
|
||
is_member: true,
|
||
topic: {
|
||
value: '',
|
||
creator: '',
|
||
last_set: 0,
|
||
},
|
||
purpose: {
|
||
value:
|
||
'This is the one channel that will always include everyone. It’s a great spot for announcements and team-wide conversations.',
|
||
creator: 'U0362BXQYJW',
|
||
last_set: 1646724991,
|
||
},
|
||
properties: {
|
||
use_case: 'welcome',
|
||
},
|
||
previous_names: [],
|
||
num_members: 1,
|
||
},
|
||
{
|
||
id: 'C0362BXRZQA',
|
||
name: 'random',
|
||
is_channel: true,
|
||
is_group: false,
|
||
is_im: false,
|
||
is_mpim: false,
|
||
is_private: false,
|
||
created: 1646724991,
|
||
is_archived: false,
|
||
is_general: false,
|
||
unlinked: 0,
|
||
name_normalized: 'random',
|
||
is_shared: false,
|
||
is_org_shared: false,
|
||
is_pending_ext_shared: false,
|
||
pending_shared: [],
|
||
context_team_id: 'T0364MSFHV2',
|
||
updated: 1725415586388,
|
||
parent_conversation: null,
|
||
creator: 'U0362BXQYJW',
|
||
is_ext_shared: false,
|
||
shared_team_ids: ['T0364MSFHV2'],
|
||
pending_connected_team_ids: [],
|
||
is_member: true,
|
||
topic: {
|
||
value: '',
|
||
creator: '',
|
||
last_set: 0,
|
||
},
|
||
purpose: {
|
||
value:
|
||
'This channel is for... well, everything else. It’s a place for team jokes, spur-of-the-moment ideas, and funny GIFs. Go wild!',
|
||
creator: 'U0362BXQYJW',
|
||
last_set: 1646724991,
|
||
},
|
||
properties: {
|
||
tabs: [
|
||
{
|
||
id: 'files',
|
||
label: '',
|
||
type: 'files',
|
||
},
|
||
],
|
||
tabz: [
|
||
{
|
||
type: 'files',
|
||
},
|
||
],
|
||
use_case: 'random',
|
||
},
|
||
previous_names: [],
|
||
num_members: 2,
|
||
},
|
||
],
|
||
response_metadata: {
|
||
next_cursor: 'dGVhbTpDMDM2MkMyM1RSOA==',
|
||
},
|
||
};
|
||
|
||
jest.mock('../../../../V2/GenericFunctions', () => {
|
||
const originalModule = jest.requireActual('../../../../V2/GenericFunctions');
|
||
return {
|
||
...originalModule,
|
||
slackApiRequest: jest.fn(async function (method: IHttpRequestMethods) {
|
||
if (method === 'GET') {
|
||
return API_RESPONSE;
|
||
}
|
||
}),
|
||
};
|
||
});
|
||
|
||
describe('Test SlackV2, channel => getAll', () => {
|
||
const workflows = ['nodes/Slack/test/v2/node/channel/getAll.workflow.json'];
|
||
const tests = workflowToTests(workflows);
|
||
const nodeTypes = setup(tests);
|
||
|
||
const testNode = async (testData: WorkflowTestData, types: INodeTypes) => {
|
||
const { result } = await executeWorkflow(testData, types);
|
||
|
||
const resultNodeData = getResultNodeData(result, testData);
|
||
|
||
resultNodeData.forEach(({ nodeName, resultData }) => {
|
||
return expect(resultData).toEqual(testData.output.nodeData[nodeName]);
|
||
});
|
||
|
||
expect(genericFunctions.slackApiRequest).toHaveBeenCalledTimes(1);
|
||
expect(genericFunctions.slackApiRequest).toHaveBeenCalledWith(
|
||
'GET',
|
||
'/conversations.list',
|
||
{},
|
||
{ exclude_archived: true, limit: 2, types: 'public_channel,private_channel,im,mpim' },
|
||
);
|
||
};
|
||
|
||
for (const testData of tests) {
|
||
test(testData.description, async () => await testNode(testData, nodeTypes));
|
||
}
|
||
});
|