refactor: Overhaul nodes-testing setup - Part 1 (no-changelog) (#14303)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2025-04-01 10:15:13 +02:00
committed by GitHub
parent f85b851851
commit 73e8d76e13
165 changed files with 3397 additions and 6453 deletions

View File

@@ -1,12 +1,24 @@
import { WorkflowExecute } from 'n8n-core';
import type { INodeTypes, IRun, IRunExecutionData } from 'n8n-workflow';
import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended';
import { ExecutionLifecycleHooks, WorkflowExecute } from 'n8n-core';
import type {
IRun,
IRunExecutionData,
IWorkflowExecuteAdditionalData,
WorkflowTestData,
} from 'n8n-workflow';
import { createDeferredPromise, Workflow } from 'n8n-workflow';
import nock from 'nock';
import * as Helpers from './Helpers';
import type { WorkflowTestData } from './types';
import { CredentialsHelper } from './credentials-helper';
import { NodeTypes } from './node-types';
// This is (temporarily) needed to setup LoadNodesAndCredentials
import './Helpers';
export async function executeWorkflow(testData: WorkflowTestData) {
const nodeTypes = Container.get(NodeTypes);
export async function executeWorkflow(testData: WorkflowTestData, nodeTypes: INodeTypes) {
if (testData.nock) {
const { baseUrl, mocks } = testData.nock;
const agent = nock(baseUrl);
@@ -46,7 +58,18 @@ export async function executeWorkflow(testData: WorkflowTestData, nodeTypes: INo
});
const waitPromise = createDeferredPromise<IRun>();
const nodeExecutionOrder: string[] = [];
const additionalData = Helpers.WorkflowExecuteAdditionalData(waitPromise, nodeExecutionOrder);
const hooks = new ExecutionLifecycleHooks('trigger', '1', mock());
hooks.addHandler('nodeExecuteAfter', (nodeName) => {
nodeExecutionOrder.push(nodeName);
});
hooks.addHandler('workflowExecuteAfter', (fullRunData) => waitPromise.resolve(fullRunData));
const additionalData = mock<IWorkflowExecuteAdditionalData>({
credentialsHelper: Container.get(CredentialsHelper),
hooks,
// Get from node.parameters
currentNodeParameters: undefined,
});
let executionData: IRun;
const runExecutionData: IRunExecutionData = {