n8n/packages/workflow/test/run-execution-data/run-execution-data.test.ts
mfsiega 9319139a08
feat(core): Switch to structured destination node (no-changelog) (#22143)
Co-authored-by: Danny Martini <danny@n8n.io>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-24 16:13:37 +01:00

86 lines
2.0 KiB
TypeScript

import { migrateRunExecutionData } from '../../src/run-execution-data/run-execution-data';
import type { IRunExecutionDataV0 } from '../../src/run-execution-data/run-execution-data.v0';
import type { IRunExecutionDataV1 } from '../../src/run-execution-data/run-execution-data.v1';
describe('migrateRunExecutionData', () => {
it('should migrate IRunExecutionDataV0 to V1', () => {
const v0Data: IRunExecutionDataV0 = {
version: 0,
startData: {
startNodes: [],
destinationNode: 'TestNode',
originalDestinationNode: 'OriginalTestNode',
runNodeFilter: ['filter1'],
},
resultData: {
runData: {},
lastNodeExecuted: 'LastNode',
metadata: { key: 'value' },
},
executionData: {
contextData: {},
nodeExecutionStack: [],
metadata: {},
waitingExecution: {},
waitingExecutionSource: null,
},
validateSignature: true,
pushRef: 'test-ref',
};
const result = migrateRunExecutionData(v0Data);
expect(result).toEqual({
...v0Data,
version: 1,
startData: {
...v0Data.startData,
destinationNode: {
nodeName: 'TestNode',
mode: 'inclusive',
},
originalDestinationNode: {
nodeName: 'OriginalTestNode',
mode: 'inclusive',
},
},
});
});
it('should return V1 data unchanged (no-op)', () => {
const v1Data: IRunExecutionDataV1 = {
version: 1,
startData: {
startNodes: [],
destinationNode: {
nodeName: 'TestNode',
mode: 'exclusive',
},
originalDestinationNode: {
nodeName: 'OriginalTestNode',
mode: 'inclusive',
},
runNodeFilter: ['filter1'],
},
resultData: {
runData: {},
lastNodeExecuted: 'LastNode',
metadata: { key: 'value' },
},
executionData: {
contextData: {},
nodeExecutionStack: [],
metadata: {},
waitingExecution: {},
waitingExecutionSource: null,
},
validateSignature: true,
pushRef: 'test-ref',
};
const result = migrateRunExecutionData(v1Data);
expect(result).toEqual(v1Data);
});
});