diff --git a/frontend/src/helpers/filters.test.ts b/frontend/src/helpers/filters.test.ts index 502362926..c6935d9a4 100644 --- a/frontend/src/helpers/filters.test.ts +++ b/frontend/src/helpers/filters.test.ts @@ -107,7 +107,7 @@ describe('Filter Transformation', () => { expect(transformed).toBe('project = 1') }) - + it('should resolve project and labels independently', () => { const transformed = transformFilterStringForApi( 'project = lorem && labels = ipsum', @@ -117,6 +117,16 @@ describe('Filter Transformation', () => { expect(transformed).toBe('project = 1 && labels = 2') }) + + it('should transform the same attribute multiple times', () => { + const transformed = transformFilterStringForApi( + 'dueDate = now/d || dueDate > now/w+1w', + nullTitleToIdResolver, + nullTitleToIdResolver, + ) + + expect(transformed).toBe('due_date = now/d || due_date > now/w+1w') + }) }) describe('To API', () => { @@ -198,5 +208,15 @@ describe('Filter Transformation', () => { expect(transformed).toBe('project in lorem, ipsum') }) + + it('should transform the same attribute multiple times', () => { + const transformed = transformFilterStringFromApi( + 'due_date = now/d || due_date > now/w+1w', + nullIdToTitleResolver, + nullIdToTitleResolver, + ) + + expect(transformed).toBe('dueDate = now/d || dueDate > now/w+1w') + }) }) }) diff --git a/frontend/src/helpers/filters.ts b/frontend/src/helpers/filters.ts index f19c8365d..de76a3171 100644 --- a/frontend/src/helpers/filters.ts +++ b/frontend/src/helpers/filters.ts @@ -127,7 +127,7 @@ export function transformFilterStringForApi( // Transform all attributes to snake case AVAILABLE_FILTER_FIELDS.forEach(f => { - filter = filter.replace(f, snakeCase(f)) + filter = filter.replaceAll(f, snakeCase(f)) }) return filter @@ -145,7 +145,7 @@ export function transformFilterStringFromApi( // Transform all attributes from snake case AVAILABLE_FILTER_FIELDS.forEach(f => { - filter = filter.replace(snakeCase(f), f) + filter = filter.replaceAll(snakeCase(f), f) }) // Transform labels to their titles