refactor: Overhaul nodes-testing setup - Part 2 (no-changelog) (#14873)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2025-04-24 17:37:26 +02:00
committed by GitHub
parent 897338bd24
commit 91069f057e
119 changed files with 556 additions and 1002 deletions

View File

@@ -1,10 +1,10 @@
import { Container } from '@n8n/di';
import { readFileSync, readdirSync, mkdtempSync } from 'fs';
import { mock } from 'jest-mock-extended';
import { get } from 'lodash';
import { isEmpty } from 'lodash';
import { type BinaryDataConfig, BinaryDataService, constructExecutionMetaData } from 'n8n-core';
import { constructExecutionMetaData } from 'n8n-core';
import type {
ICredentialDataDecryptedObject,
IDataObject,
IExecuteFunctions,
IGetNodeParameterOptions,
@@ -36,17 +36,6 @@ export function createTemporaryDir(prefix = 'n8n') {
return mkdtempSync(path.join(tmpdir(), prefix));
}
export async function initBinaryDataService() {
const binaryDataConfig = mock<BinaryDataConfig>({
mode: 'default',
availableModes: ['default'],
localStoragePath: createTemporaryDir(),
});
const binaryDataService = new BinaryDataService(binaryDataConfig);
await binaryDataService.init();
Container.set(BinaryDataService, binaryDataService);
}
export function getResultNodeData(result: IRun, testData: WorkflowTestData) {
return Object.keys(testData.output.nodeData).map((nodeName) => {
const error = result.data.resultData.error;
@@ -127,7 +116,10 @@ const preparePinData = (pinData: IDataObject) => {
return returnData;
};
export const workflowToTests = (workflowFiles: string[]) => {
export const workflowToTests = (
workflowFiles: string[],
credentials?: Record<string, ICredentialDataDecryptedObject>,
) => {
const testCases: WorkflowTestData[] = [];
for (const filePath of workflowFiles) {
const description = filePath.replace('.json', '');
@@ -155,13 +147,16 @@ export const workflowToTests = (workflowFiles: string[]) => {
const input = { workflowData };
const output = { nodeData };
testCases.push({ description, input, output, trigger });
testCases.push({ description, input, output, trigger, credentials });
}
return testCases;
};
export const testWorkflows = (workflows: string[]) => {
const tests = workflowToTests(workflows);
export const testWorkflows = (
workflows: string[],
credentials?: Record<string, ICredentialDataDecryptedObject>,
) => {
const tests = workflowToTests(workflows, credentials);
for (const testData of tests) {
test(testData.description, async () => await equalityTest(testData));