fix(HubSpot Node): Fetching available parameters fails when using expressions (#7672)

This fix affects all nodes, will fix this issue in all nodes

Github issue / Community forum post (link here to close automatically):

Co-authored-by: Michael Kret <michael.k@radency.com>
This commit is contained in:
Elias Meire 2023-11-13 12:28:55 +01:00 committed by GitHub
parent 1c7225ebdb
commit a9ab73896e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 63 additions and 7 deletions

View file

@ -538,7 +538,7 @@ export function getParameterResolveOrder(
*/
export function getNodeParameters(
nodePropertiesArray: INodeProperties[],
nodeValues: INodeParameters,
nodeValues: INodeParameters | null,
returnDefaults: boolean,
returnNoneDisplayed: boolean,
node: INode | null,
@ -588,16 +588,17 @@ export function getNodeParameters(
nodeValuesRoot = nodeValuesRoot || nodeValuesDisplayCheck;
// Go through the parameters in order of their dependencies
const parameterItterationOrderIndex = getParameterResolveOrder(
const parameterIterationOrderIndex = getParameterResolveOrder(
nodePropertiesArray,
parameterDependencies,
);
for (const parameterIndex of parameterItterationOrderIndex) {
for (const parameterIndex of parameterIterationOrderIndex) {
const nodeProperties = nodePropertiesArray[parameterIndex];
if (
nodeValues[nodeProperties.name] === undefined &&
(!returnDefaults || parentType === 'collection')
!nodeValues ||
(nodeValues[nodeProperties.name] === undefined &&
(!returnDefaults || parentType === 'collection'))
) {
// The value is not defined so go to the next
continue;

View file

@ -2,12 +2,12 @@ import type { INodeParameters, INodeProperties } from '@/Interfaces';
import { getNodeParameters } from '@/NodeHelpers';
describe('NodeHelpers', () => {
describe('getParameterValue', () => {
describe('getNodeParameters', () => {
const tests: Array<{
description: string;
input: {
nodePropertiesArray: INodeProperties[];
nodeValues: INodeParameters;
nodeValues: INodeParameters | null;
};
output: {
noneDisplayedFalse: {
@ -3336,6 +3336,61 @@ describe('NodeHelpers', () => {
},
},
},
{
description: 'nodeValues is null (for example when resolving expression fails)',
input: {
nodePropertiesArray: [
{
displayName: 'Custom Properties',
name: 'customPropertiesUi',
placeholder: 'Add Custom Property',
type: 'fixedCollection',
typeOptions: {
multipleValues: true,
},
default: {},
options: [
{
name: 'customPropertiesValues',
displayName: 'Custom Property',
values: [
{
displayName: 'Property Name or ID',
name: 'property',
type: 'options',
typeOptions: {
loadOptionsMethod: 'getDealCustomProperties',
},
default: '',
description:
'Name of the property. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
},
{
displayName: 'Value',
name: 'value',
type: 'string',
default: '',
required: true,
description: 'Value of the property',
},
],
},
],
},
],
nodeValues: null,
},
output: {
noneDisplayedFalse: {
defaultsFalse: {},
defaultsTrue: {},
},
noneDisplayedTrue: {
defaultsFalse: {},
defaultsTrue: {},
},
},
},
];
for (const testData of tests) {