From ab5472437b94fe81270f809ab6fd00f204c688b8 Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Wed, 2 Jun 2021 14:38:50 -0400 Subject: [PATCH] fix(filters): filtering with IN_CONTAINS should also work with spaces --- .../__tests__/filterUtilities.spec.ts | 15 ++++++++++++++- .../src/filter-conditions/filterUtilities.ts | 4 ++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/common/src/filter-conditions/__tests__/filterUtilities.spec.ts b/packages/common/src/filter-conditions/__tests__/filterUtilities.spec.ts index 04e3f20d7..211586495 100644 --- a/packages/common/src/filter-conditions/__tests__/filterUtilities.spec.ts +++ b/packages/common/src/filter-conditions/__tests__/filterUtilities.spec.ts @@ -187,6 +187,11 @@ describe('filterUtilities', () => { expect(output).toBeTruthy(); }); + it('should return True when value1 is "IN_CONTAINS" value2 collection even if there is extra spaces in the string', () => { + const output = testFilterCondition('IN_CONTAINS', 'Task2, Task3 ', ['Task2', 'Task3']); + expect(output).toBeTruthy(); + }); + it('should return False when value1 is not "IN_CONTAINS" value2 collection', () => { const output = testFilterCondition('IN_CONTAINS', 'Task11,Task4', ['Task 1', 'Task2', 'Task3']); expect(output).toBeFalsy(); @@ -212,7 +217,15 @@ describe('filterUtilities', () => { expect(output1).toBeFalsy(); expect(output2).toBeFalsy(); }); - + + it('should return False when value1 is not "NOT_IN_CONTAINS" value2 collection even if there is extra spaces in the string', () => { + const output1 = testFilterCondition('NIN_CONTAINS', 'Task2, Task3 ', ['Task2', 'Task3']); + const output2 = testFilterCondition('NOT_IN_CONTAINS', 'Task2, Task3', ['Task2', 'Task3']); + + expect(output1).toBeFalsy(); + expect(output2).toBeFalsy(); + }); + it('should return False when value2 is not a collection', () => { const output = testFilterCondition('NOT_IN_CONTAINS', 'Task2,Task3', 'Task2'); expect(output).toBeFalsy(); diff --git a/packages/common/src/filter-conditions/filterUtilities.ts b/packages/common/src/filter-conditions/filterUtilities.ts index 56350e02d..063094203 100644 --- a/packages/common/src/filter-conditions/filterUtilities.ts +++ b/packages/common/src/filter-conditions/filterUtilities.ts @@ -75,13 +75,13 @@ export const testFilterCondition = (operator: OperatorString, value1: any, value return ((value2 && Array.isArray(value2 as string[])) ? (!value2.includes(value1)) : false); case 'IN_CONTAINS': if (value2 && Array.isArray(value2) && typeof value1 === 'string') { - return value2.some(item => value1.split(/[\s,]+/).includes(item)); + return value2.some(item => value1.split(/[\s,]+/).map(val => (val.trim())).includes(item)); } return false; case 'NIN_CONTAINS': case 'NOT_IN_CONTAINS': if (value2 && Array.isArray(value2) && typeof value1 === 'string') { - return !value2.some(item => value1.split(/[\s,]+/).includes(item)); + return !value2.some(item => value1.split(/[\s,]+/).map(val => (val.trim())).includes(item)); } return false; case 'IN_COLLECTION':