test: Add unit testing to nodes (no-changelog) (#4890)

* 🧪 Add base for building unit testing within nodes

* Improve helper functions

* 🧪 If node test

* 🧪 Airtable node test

* 🧪 If node test improvements

* 🧪 Airtable node test improvements

* ♻️ cleanup node unit tests

* ♻️ refactor getting node result data to use helper method

*  removed unused variables

* ♻️ Helper to read json files

---------

Co-authored-by: Marcus <marcus@n8n.io>
Co-authored-by: Michael Kret <michael.k@radency.com>
This commit is contained in:
agobrech
2023-01-30 12:20:33 +01:00
committed by GitHub
parent dbcbe595cc
commit 5b9c650e55
9 changed files with 772 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
import { WorkflowExecute } from 'n8n-core';
import { createDeferredPromise, INodeTypes, IRun, Workflow } from 'n8n-workflow';
import * as Helpers from './Helpers';
export async function executeWorkflow(testData, nodeTypes: INodeTypes) {
const executionMode = 'manual';
const workflowInstance = new Workflow({
id: 'test',
nodes: testData.input.workflowData.nodes,
connections: testData.input.workflowData.connections,
active: false,
nodeTypes,
});
const waitPromise = await createDeferredPromise<IRun>();
const nodeExecutionOrder: string[] = [];
const additionalData = Helpers.WorkflowExecuteAdditionalData(waitPromise, nodeExecutionOrder);
const workflowExecute = new WorkflowExecute(additionalData, executionMode);
const executionData = await workflowExecute.run(workflowInstance);
const result = await waitPromise.promise();
return { executionData, result, nodeExecutionOrder };
}