From 6ca58f23ffb4c214fb633a9d591a2c77cf646aba Mon Sep 17 00:00:00 2001 From: Jack Senyitko Date: Fri, 5 Dec 2025 13:59:14 -0500 Subject: [PATCH 1/6] remove uncategorized --- src/CONST/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CONST/index.ts b/src/CONST/index.ts index cdcc879b01f4b..05daf87ea2485 100755 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -6823,7 +6823,7 @@ const CONST = { BEFORE_PREFIX: 'reportFieldBefore-', }, TAG_EMPTY_VALUE: 'none', - CATEGORY_EMPTY_VALUE: 'none,Uncategorized', + CATEGORY_EMPTY_VALUE: 'none', SEARCH_ROUTER_ITEM_TYPE: { CONTEXTUAL_SUGGESTION: 'contextualSuggestion', AUTOCOMPLETE_SUGGESTION: 'autocompleteSuggestion', From 5deb093f523cefb7eb21368b3a4686a8341d60f8 Mon Sep 17 00:00:00 2001 From: Jack Senyitko Date: Fri, 5 Dec 2025 14:07:33 -0500 Subject: [PATCH 2/6] fix other logic for categories --- src/libs/CategoryUtils.ts | 3 +-- src/libs/SearchQueryUtils.ts | 4 +--- src/libs/SearchUIUtils.ts | 3 +-- tests/unit/Search/SearchUIUtilsTest.ts | 2 +- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/libs/CategoryUtils.ts b/src/libs/CategoryUtils.ts index fb87060ed1fae..a38042c5f410c 100644 --- a/src/libs/CategoryUtils.ts +++ b/src/libs/CategoryUtils.ts @@ -98,9 +98,8 @@ function isCategoryMissing(category: string | undefined): boolean { if (!category) { return true; } - const emptyCategories = CONST.SEARCH.CATEGORY_EMPTY_VALUE.split(','); - return emptyCategories.includes(category ?? ''); + return category === CONST.SEARCH.CATEGORY_EMPTY_VALUE; } function isCategoryDescriptionRequired(policyCategories: PolicyCategories | undefined, category: string | undefined, areRulesEnabled: boolean | undefined): boolean { diff --git a/src/libs/SearchQueryUtils.ts b/src/libs/SearchQueryUtils.ts index 06bcd94ea10bb..5a7d29deb74a2 100644 --- a/src/libs/SearchQueryUtils.ts +++ b/src/libs/SearchQueryUtils.ts @@ -834,9 +834,7 @@ function buildFilterFormValuesFromQuery( .map((item) => Object.values(item ?? {}).map((category) => category.name)) .flat(); const uniqueCategories = new Set(categories); - const emptyCategories = CONST.SEARCH.CATEGORY_EMPTY_VALUE.split(','); - const hasEmptyCategoriesInFilter = emptyCategories.every((category) => filterValues.includes(category)); - // We split CATEGORY_EMPTY_VALUE into individual values to detect both are present in filterValues. + const hasEmptyCategoriesInFilter = filterValues.includes(CONST.SEARCH.CATEGORY_EMPTY_VALUE); // If empty categories are found, append the CATEGORY_EMPTY_VALUE to filtersForm. filtersForm[key as typeof filterKey] = filterValues.filter((name) => uniqueCategories.has(name)).concat(hasEmptyCategoriesInFilter ? [CONST.SEARCH.CATEGORY_EMPTY_VALUE] : []); } diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index 53edb87190a85..a8af1a0161200 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -2500,8 +2500,7 @@ function getColumnsToShow( } const category = getCategory(transaction); - const categoryEmptyValues = CONST.SEARCH.CATEGORY_EMPTY_VALUE.split(','); - if (category !== '' && !categoryEmptyValues.includes(category)) { + if (category !== '' && category !== CONST.SEARCH.CATEGORY_EMPTY_VALUE) { columns[CONST.REPORT.TRANSACTION_LIST.COLUMNS.CATEGORY] = true; } diff --git a/tests/unit/Search/SearchUIUtilsTest.ts b/tests/unit/Search/SearchUIUtilsTest.ts index cc02268e414cf..5cfa618aac146 100644 --- a/tests/unit/Search/SearchUIUtilsTest.ts +++ b/tests/unit/Search/SearchUIUtilsTest.ts @@ -2757,7 +2757,7 @@ describe('SearchUIUtils', () => { merchant: '', modifiedMerchant: 'Modified Merchant', comment: {comment: ''}, - category: 'Uncategorized', // This is in CONST.SEARCH.CATEGORY_EMPTY_VALUE + category: 'none', // This is in CONST.SEARCH.CATEGORY_EMPTY_VALUE tag: CONST.SEARCH.TAG_EMPTY_VALUE, // This is the empty tag value accountID: adminAccountID, managerID: adminAccountID, From 0076a48a0720f6f3aa2af4a500634ec2415a2866 Mon Sep 17 00:00:00 2001 From: Jack Senyitko Date: Fri, 5 Dec 2025 14:11:56 -0500 Subject: [PATCH 3/6] highlight none --- src/libs/SearchAutocompleteUtils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/SearchAutocompleteUtils.ts b/src/libs/SearchAutocompleteUtils.ts index e3ec6741b10ad..6786a156beb91 100644 --- a/src/libs/SearchAutocompleteUtils.ts +++ b/src/libs/SearchAutocompleteUtils.ts @@ -136,6 +136,7 @@ const userFriendlyStatusList = Object.values({ /** * @private + * Determines if a specific value in the search syntax can/should be highlighted as valid or not */ function filterOutRangesWithCorrectValue( range: SearchAutocompleteQueryRange, @@ -193,7 +194,7 @@ function filterOutRangesWithCorrectValue( case CONST.SEARCH.SYNTAX_FILTER_KEYS.ACTION: return actionList.includes(range.value); case CONST.SEARCH.SYNTAX_FILTER_KEYS.CATEGORY: - return categoryList.get().includes(range.value); + return categoryList.get().includes(range.value) || range.value === CONST.SEARCH.CATEGORY_EMPTY_VALUE; case CONST.SEARCH.SYNTAX_FILTER_KEYS.TAG: return tagList.get().includes(range.value); case CONST.SEARCH.SYNTAX_ROOT_KEYS.GROUP_BY: From 97eda1f08f700dded9edff857a02a72f03d66631 Mon Sep 17 00:00:00 2001 From: Jack Senyitko Date: Mon, 8 Dec 2025 12:00:12 -0500 Subject: [PATCH 4/6] remove uncategorized from tests --- tests/unit/ReportLayoutUtilsTest.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/unit/ReportLayoutUtilsTest.ts b/tests/unit/ReportLayoutUtilsTest.ts index f5df2c46557e5..3f24c504dc295 100644 --- a/tests/unit/ReportLayoutUtilsTest.ts +++ b/tests/unit/ReportLayoutUtilsTest.ts @@ -154,10 +154,7 @@ describe('groupTransactionsByCategory', () => { it('treats missing category as empty category group', () => { const report = createMockReport(); - const transactions = [ - createMockTransaction({transactionID: '1', category: 'none', amount: -1000}), - createMockTransaction({transactionID: '2', category: 'Uncategorized', amount: -500}), - ]; + const transactions = [createMockTransaction({transactionID: '1', category: 'none', amount: -1000})]; const result = groupTransactionsByCategory(transactions, report, mockLocaleCompare); From 17a2e24cf8d09a094d379c6a1e92c154f853a057 Mon Sep 17 00:00:00 2001 From: Jack Senyitko Date: Mon, 8 Dec 2025 16:17:09 -0500 Subject: [PATCH 5/6] fix tests --- src/CONST/index.ts | 1 + src/libs/CategoryUtils.ts | 2 +- tests/unit/ReportLayoutUtilsTest.ts | 5 ++++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 05daf87ea2485..19dd01ffc1409 100755 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -6824,6 +6824,7 @@ const CONST = { }, TAG_EMPTY_VALUE: 'none', CATEGORY_EMPTY_VALUE: 'none', + CATEGORY_DEFAULT_VALUE: 'Uncategorized', SEARCH_ROUTER_ITEM_TYPE: { CONTEXTUAL_SUGGESTION: 'contextualSuggestion', AUTOCOMPLETE_SUGGESTION: 'autocompleteSuggestion', diff --git a/src/libs/CategoryUtils.ts b/src/libs/CategoryUtils.ts index a38042c5f410c..30f44eeb625d1 100644 --- a/src/libs/CategoryUtils.ts +++ b/src/libs/CategoryUtils.ts @@ -99,7 +99,7 @@ function isCategoryMissing(category: string | undefined): boolean { return true; } - return category === CONST.SEARCH.CATEGORY_EMPTY_VALUE; + return category === CONST.SEARCH.CATEGORY_EMPTY_VALUE || category === CONST.SEARCH.CATEGORY_DEFAULT_VALUE; } function isCategoryDescriptionRequired(policyCategories: PolicyCategories | undefined, category: string | undefined, areRulesEnabled: boolean | undefined): boolean { diff --git a/tests/unit/ReportLayoutUtilsTest.ts b/tests/unit/ReportLayoutUtilsTest.ts index 3f24c504dc295..f5df2c46557e5 100644 --- a/tests/unit/ReportLayoutUtilsTest.ts +++ b/tests/unit/ReportLayoutUtilsTest.ts @@ -154,7 +154,10 @@ describe('groupTransactionsByCategory', () => { it('treats missing category as empty category group', () => { const report = createMockReport(); - const transactions = [createMockTransaction({transactionID: '1', category: 'none', amount: -1000})]; + const transactions = [ + createMockTransaction({transactionID: '1', category: 'none', amount: -1000}), + createMockTransaction({transactionID: '2', category: 'Uncategorized', amount: -500}), + ]; const result = groupTransactionsByCategory(transactions, report, mockLocaleCompare); From 91ca92f6d0f84f9e702c9c77e844fa77c67bcff4 Mon Sep 17 00:00:00 2001 From: Jack Senyitko Date: Tue, 9 Dec 2025 10:36:21 -0500 Subject: [PATCH 6/6] fix last test --- tests/unit/Search/SearchQueryUtilsTest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/Search/SearchQueryUtilsTest.ts b/tests/unit/Search/SearchQueryUtilsTest.ts index 66b95d9195022..2e3b935d15f63 100644 --- a/tests/unit/Search/SearchQueryUtilsTest.ts +++ b/tests/unit/Search/SearchQueryUtilsTest.ts @@ -394,7 +394,7 @@ describe('SearchQueryUtils', () => { expect(result).toEqual({ type: 'expense', status: CONST.SEARCH.STATUS.EXPENSE.ALL, - category: ['Maintenance', 'none,Uncategorized'], + category: ['Maintenance', 'none'], }); });