fix: Show error when referencing node that exist but has not been executed (#6496)

Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
This commit is contained in:
Ricardo Espinoza 2023-06-22 19:45:54 -04:00 committed by GitHub
parent 0e071724ee
commit 3db2707b8e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 2 deletions

View file

@ -188,7 +188,11 @@ describe('Data mapping', () => {
ndv.getters
.inlineExpressionEditorInput()
.should('have.text', `{{ $('${SCHEDULE_TRIGGER_NODE_NAME}').item.json.input[0].count }}`);
ndv.getters.parameterExpressionPreview('value').should('not.exist');
ndv.getters
.parameterExpressionPreview('value')
.invoke('text')
.invoke('replace', /\u00a0/g, ' ')
.should('equal', '[ERROR: no data, execute "Schedule Trigger" node first]');
ndv.actions.switchInputMode('Table');
ndv.actions.mapDataFromHeader(1, 'value');

View file

@ -943,6 +943,10 @@ export class WorkflowDataProxy {
throw createExpressionError(`"${nodeName}" node doesn't exist`);
}
if (!that?.runExecutionData?.resultData?.runData.hasOwnProperty(nodeName)) {
throw createExpressionError(`no data, execute "${nodeName}" node first`);
}
return new Proxy(
{},
{

View file

@ -2,6 +2,7 @@ import type { IConnections, IExecuteData, INode, IRunExecutionData } from '@/Int
import { Workflow } from '@/Workflow';
import { WorkflowDataProxy } from '@/WorkflowDataProxy';
import * as Helpers from './Helpers';
import { ExpressionError } from '@/ExpressionError';
describe('WorkflowDataProxy', () => {
describe('test data proxy', () => {
@ -37,13 +38,21 @@ describe('WorkflowDataProxy', () => {
position: [460, 200],
},
{
name: 'End',
name: 'Set',
type: 'test.set',
parameters: {},
typeVersion: 1,
id: 'uuid-4',
position: [640, 200],
},
{
name: 'End',
type: 'test.set',
parameters: {},
typeVersion: 1,
id: 'uuid-5',
position: [640, 200],
},
];
const connections: IConnections = {
@ -282,6 +291,14 @@ describe('WorkflowDataProxy', () => {
expect(proxy.$('Rename').params).toEqual({ value1: 'data', value2: 'initialName' });
});
test('$("NodeName")', () => {
expect(() => proxy.$('doNotExist')).toThrowError(ExpressionError);
});
test('$("NodeName")', () => {
expect(() => proxy.$('Set')).toThrowError(ExpressionError);
});
test('test $input.all()', () => {
expect(proxy.$input.all()[1].json.data).toEqual(160);
});