mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
fix(n8n Form Node): Completion page response mode, do not error on execution running (no-changelog) (#13566)
This commit is contained in:
@@ -3,6 +3,8 @@ import ParameterInputList from './ParameterInputList.vue';
|
||||
import { createTestingPinia } from '@pinia/testing';
|
||||
import { mockedStore } from '@/__tests__/utils';
|
||||
import { useNDVStore } from '@/stores/ndv.store';
|
||||
import * as workflowHelpers from '@/composables/useWorkflowHelpers';
|
||||
|
||||
import {
|
||||
TEST_NODE_NO_ISSUES,
|
||||
TEST_PARAMETERS,
|
||||
@@ -11,6 +13,15 @@ import {
|
||||
FIXED_COLLECTION_PARAMETERS,
|
||||
TEST_ISSUE,
|
||||
} from './ParameterInputList.test.constants';
|
||||
import { FORM_NODE_TYPE, FORM_TRIGGER_NODE_TYPE } from 'n8n-workflow';
|
||||
import type { INodeUi } from '../Interface';
|
||||
import type { MockInstance } from 'vitest';
|
||||
|
||||
vi.mock('@/composables/useWorkflowHelpers', () => ({
|
||||
useWorkflowHelpers: vi.fn().mockReturnValue({
|
||||
getCurrentWorkflow: vi.fn(),
|
||||
}),
|
||||
}));
|
||||
|
||||
vi.mock('vue-router', async () => {
|
||||
const actual = await vi.importActual('vue-router');
|
||||
@@ -98,4 +109,71 @@ describe('ParameterInputList', () => {
|
||||
).toBeInTheDocument();
|
||||
expect(getByText(TEST_ISSUE)).toBeInTheDocument();
|
||||
});
|
||||
|
||||
describe('updateFormParameters', () => {
|
||||
const workflowHelpersMock: MockInstance = vi.spyOn(workflowHelpers, 'useWorkflowHelpers');
|
||||
const formParameters = [
|
||||
{
|
||||
displayName: 'TRIGGER NOTICE',
|
||||
name: 'triggerNotice',
|
||||
type: 'notice',
|
||||
default: '',
|
||||
},
|
||||
];
|
||||
|
||||
afterAll(() => {
|
||||
workflowHelpersMock.mockRestore();
|
||||
});
|
||||
|
||||
it('should show triggerNotice if Form Trigger not connected', () => {
|
||||
ndvStore.activeNode = { name: 'From', type: FORM_NODE_TYPE, parameters: {} } as INodeUi;
|
||||
|
||||
workflowHelpersMock.mockReturnValue({
|
||||
getCurrentWorkflow: vi.fn(() => {
|
||||
return {
|
||||
getParentNodes: vi.fn(() => []),
|
||||
nodes: {},
|
||||
};
|
||||
}),
|
||||
});
|
||||
|
||||
const { getByText } = renderComponent({
|
||||
props: {
|
||||
parameters: formParameters,
|
||||
nodeValues: {},
|
||||
},
|
||||
});
|
||||
|
||||
expect(getByText('TRIGGER NOTICE')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should not show triggerNotice if Form Trigger is connected', () => {
|
||||
ndvStore.activeNode = { name: 'From', type: FORM_NODE_TYPE, parameters: {} } as INodeUi;
|
||||
|
||||
workflowHelpersMock.mockReturnValue({
|
||||
getCurrentWorkflow: vi.fn(() => {
|
||||
return {
|
||||
getParentNodes: vi.fn(() => ['Form Trigger']),
|
||||
nodes: {
|
||||
'Form Trigger': {
|
||||
type: FORM_TRIGGER_NODE_TYPE,
|
||||
parameters: {},
|
||||
},
|
||||
},
|
||||
};
|
||||
}),
|
||||
});
|
||||
|
||||
const { queryByText } = renderComponent({
|
||||
props: {
|
||||
parameters: formParameters,
|
||||
nodeValues: {},
|
||||
},
|
||||
});
|
||||
|
||||
const el = queryByText('TRIGGER NOTICE');
|
||||
|
||||
expect(el).not.toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -28,6 +28,7 @@ import {
|
||||
} from '@/constants';
|
||||
import { useNDVStore } from '@/stores/ndv.store';
|
||||
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
|
||||
|
||||
import {
|
||||
getMainAuthField,
|
||||
getNodeAuthFields,
|
||||
@@ -114,6 +115,11 @@ const filteredParameters = computedWithControl(
|
||||
if (activeNode && activeNode.type === FORM_TRIGGER_NODE_TYPE) {
|
||||
return updateFormTriggerParameters(parameters, activeNode.name);
|
||||
}
|
||||
|
||||
if (activeNode && activeNode.type === FORM_NODE_TYPE) {
|
||||
return updateFormParameters(parameters, activeNode.name);
|
||||
}
|
||||
|
||||
if (
|
||||
activeNode &&
|
||||
activeNode.type === WAIT_NODE_TYPE &&
|
||||
@@ -267,6 +273,19 @@ function updateWaitParameters(parameters: INodeProperties[], nodeName: string) {
|
||||
return parameters;
|
||||
}
|
||||
|
||||
function updateFormParameters(parameters: INodeProperties[], nodeName: string) {
|
||||
const workflow = workflowHelpers.getCurrentWorkflow();
|
||||
const parentNodes = workflow.getParentNodes(nodeName);
|
||||
|
||||
const formTriggerName = parentNodes.find(
|
||||
(node) => workflow.nodes[node].type === FORM_TRIGGER_NODE_TYPE,
|
||||
);
|
||||
|
||||
if (formTriggerName) return parameters.filter((parameter) => parameter.name !== 'triggerNotice');
|
||||
|
||||
return parameters;
|
||||
}
|
||||
|
||||
function onParameterBlur(parameterName: string) {
|
||||
emit('parameterBlur', parameterName);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user