diff --git a/src/parameter/filters/build.ts b/src/parameter/filters/build.ts index 89e5f83b..a07a9d91 100644 --- a/src/parameter/filters/build.ts +++ b/src/parameter/filters/build.ts @@ -26,8 +26,23 @@ export function buildQueryFilters( } if (Array.isArray(input)) { - // todo: check array elements are string - output[key] = input.join(','); + // preserve null values + const data : string[] = []; + for (let i = 0; i < input.length; i++) { + if (input[i] === null) { + input[i] = 'null'; + } + + if (typeof input[i] === 'number') { + input[i] = `${input[i]}`; + } + + if (typeof input[i] === 'string') { + data.push(input[i]); + } + } + + output[key] = data.join(','); return true; } diff --git a/src/parameter/filters/utils/value.ts b/src/parameter/filters/utils/value.ts index 86d719c5..e592a261 100644 --- a/src/parameter/filters/utils/value.ts +++ b/src/parameter/filters/utils/value.ts @@ -45,7 +45,7 @@ export function transformFilterValue(input: FilterValueSimple) : FilterValueSimp } return (input as unknown[]) - .filter((n) => n === 0 || !!n) as FilterValueSimple; + .filter((n) => n === 0 || n === null || !!n) as FilterValueSimple; } if (typeof input === 'undefined' || input === null) { diff --git a/test/unit/build.spec.ts b/test/unit/build.spec.ts index 781129e0..49441de4 100644 --- a/test/unit/build.spec.ts +++ b/test/unit/build.spec.ts @@ -137,10 +137,10 @@ describe('src/build.ts', () => { // with negation & in operator record = buildQuery({ filter: { - id: [1,2,3], + id: [null, 1,2,3], }, }); - expect(record).toEqual(buildURLQueryString({ [URLParameter.FILTERS]: { id: '1,2,3' } })); + expect(record).toEqual(buildURLQueryString({ [URLParameter.FILTERS]: { id: 'null,1,2,3' } })); // with negation & like operator record = buildQuery({ diff --git a/test/unit/filters.spec.ts b/test/unit/filters.spec.ts index b2a370f9..80ad4314 100644 --- a/test/unit/filters.spec.ts +++ b/test/unit/filters.spec.ts @@ -304,7 +304,7 @@ describe('src/filter/index.ts', () => { { key: 'id', operator: FilterComparisonOperator.IN, - value: [0, 1, 2, 3], + value: [null, 0, 1, 2, 3], }, ] as FiltersParseOutput);