From f049d3e34aa9d96d0eb2ecc4e19581caeefc0891 Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Thu, 19 Feb 2026 18:45:22 +0100 Subject: [PATCH] fix: Search in folders editor with verbose names (#38101) --- .../FoldersEditor/folderOperations.test.ts | 37 +++++++++++++++++++ .../FoldersEditor/folderOperations.ts | 8 +++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/superset-frontend/src/components/Datasource/FoldersEditor/folderOperations.test.ts b/superset-frontend/src/components/Datasource/FoldersEditor/folderOperations.test.ts index df7e1ea9280..0b0c8f7dd6b 100644 --- a/superset-frontend/src/components/Datasource/FoldersEditor/folderOperations.test.ts +++ b/superset-frontend/src/components/Datasource/FoldersEditor/folderOperations.test.ts @@ -124,6 +124,43 @@ describe('folderUtils', () => { expect(result.size).toBe(4); }); + + test('should match by verbose_name', () => { + const metrics: Metric[] = [ + { + uuid: 'metric-v1', + metric_name: 'count', + verbose_name: 'COUNT(*)', + expression: 'COUNT(*)', + } as Metric, + ]; + const result = filterItemsBySearch('COUNT', metrics); + + expect(result.size).toBe(1); + expect(result.has('metric-v1')).toBe(true); + }); + + test('should match by expression', () => { + const result = filterItemsBySearch('COUNT(*)', mockMetrics); + + expect(result.size).toBe(1); + expect(result.has('metric-1')).toBe(true); + }); + + test('should match special characters in search term', () => { + const metrics: Metric[] = [ + { + uuid: 'metric-special', + metric_name: 'count', + verbose_name: 'COUNT(*)', + expression: 'COUNT(*)', + } as Metric, + ]; + const result = filterItemsBySearch('(*)', metrics); + + expect(result.size).toBe(1); + expect(result.has('metric-special')).toBe(true); + }); }); describe('isDefaultFolder', () => { diff --git a/superset-frontend/src/components/Datasource/FoldersEditor/folderOperations.ts b/superset-frontend/src/components/Datasource/FoldersEditor/folderOperations.ts index 852de41f7f9..e9f0b0d9119 100644 --- a/superset-frontend/src/components/Datasource/FoldersEditor/folderOperations.ts +++ b/superset-frontend/src/components/Datasource/FoldersEditor/folderOperations.ts @@ -80,7 +80,13 @@ export const filterItemsBySearch = ( items.forEach(item => { const name = 'metric_name' in item ? item.metric_name : item.column_name; - if (name?.toLowerCase().includes(lowerSearch)) { + const { verbose_name: verboseName, expression } = item; + + if ( + name?.toLowerCase().includes(lowerSearch) || + verboseName?.toLowerCase().includes(lowerSearch) || + expression?.toLowerCase().includes(lowerSearch) + ) { matchingIds.add(item.uuid); } });