From 8b7b32a41207b56c94b33d8e0b048bd6de86a247 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Dugovi=C4=8D?= Date: Tue, 18 Aug 2026 12:33:10 +0200 Subject: [PATCH] refactor: remove systems default filter HMS-11196 There was a backend filter that the frontend filter counteracted. The backend filter was removed, the FE filter can now be removed as well. The BE now returns both fresh and stale systems by default. --- .../Filters/SystemStaleFilter.js | 2 +- .../Filters/SystemStaleFilter.test.js | 2 +- .../StatusReports/SystemsStatusReport.js | 5 +- .../Systems/SystemTable.test.js | 108 ++---------------- src/SmartComponents/Systems/SystemsTable.js | 3 +- src/Utilities/constants.js | 2 +- src/store/Reducers/SystemsStore.js | 3 - 7 files changed, 14 insertions(+), 111 deletions(-) diff --git a/src/PresentationalComponents/Filters/SystemStaleFilter.js b/src/PresentationalComponents/Filters/SystemStaleFilter.js index 9a89ebee3..6b700f1d2 100644 --- a/src/PresentationalComponents/Filters/SystemStaleFilter.js +++ b/src/PresentationalComponents/Filters/SystemStaleFilter.js @@ -28,7 +28,7 @@ const systemsStaleFilter = (apply, currentFilter = {}) => { return { label: intl.formatMessage(messages.labelsFiltersStale), - type: conditionalFilterType.checkbox, + type: conditionalFilterType.singleSelect, filterValues: { onChange: (event, value) => { filterByStale(value); diff --git a/src/PresentationalComponents/Filters/SystemStaleFilter.test.js b/src/PresentationalComponents/Filters/SystemStaleFilter.test.js index b2f3717d7..1c1f76926 100644 --- a/src/PresentationalComponents/Filters/SystemStaleFilter.test.js +++ b/src/PresentationalComponents/Filters/SystemStaleFilter.test.js @@ -13,7 +13,7 @@ describe('SystemStaleFilter', () => { const response = systemStaleFilter(apply, currentFilter); expect(response.filterValues.value).toEqual(['filter']); expect(response.label).toEqual('Status'); - expect(response.type).toEqual('checkbox'); + expect(response.type).toEqual('singleSelect'); }); it('Should call apply with a test value', () => { diff --git a/src/PresentationalComponents/StatusReports/SystemsStatusReport.js b/src/PresentationalComponents/StatusReports/SystemsStatusReport.js index 43ea8ce82..07f2d7f09 100644 --- a/src/PresentationalComponents/StatusReports/SystemsStatusReport.js +++ b/src/PresentationalComponents/StatusReports/SystemsStatusReport.js @@ -44,7 +44,6 @@ const SystemsStatusReport = ({ apply, queryParams }) => { selectedTags: [...selectedTags, ...selectedGlobalTags], systemProfile, limit: 1, - 'filter[stale]': 'in:true,false', }).then((result) => { setSubtotals(result.meta?.subtotals); }); @@ -77,14 +76,14 @@ const SystemsStatusReport = ({ apply, queryParams }) => { color='var(--pf-t--global--icon--color--status--success--default)' value={subtotals?.patched} apply={apply} - filter={{ filter: { packages_updatable: 'eq:0', stale: false } }} // TODO: remove `stale: false` once default filter is gone + filter={{ filter: { packages_updatable: 'eq:0', stale: false } }} /> { value: undefined, }, label: 'Status', - type: 'checkbox', + type: 'singleSelect', }, { filterValues: { @@ -232,106 +232,12 @@ describe('SystemsTable', () => { ); }); - it('should keep default systems filters visible while hiding reset at baseline', async () => { - const filteredState = { - ...mockState, - SystemsStore: { - queryParams: { - filter: { stale: [true, false] }, - }, - }, - }; - - await renderComponent(filteredState); - expect(InventoryTable).toHaveBeenCalledWith( - expect.objectContaining({ - activeFiltersConfig: { - deleteTitle: 'Reset filters', - filters: [ - { - category: 'Status', - chips: [ - { - id: true, - name: 'Stale', - value: true, - }, - { - id: false, - name: 'Fresh', - value: false, - }, - ], - id: 'stale', - }, - ], - onDelete: expect.any(Function), - showDeleteButton: false, - }, - }), - {}, - ); - }); - - it('should show reset only when at least one filter differs from defaults', async () => { - const filteredState = { - ...mockState, - SystemsStore: { - queryParams: { - filter: { packages_updatable: 'eq:0', stale: [true, false] }, - }, - }, - }; - - await renderComponent(filteredState); - - expect(InventoryTable).toHaveBeenCalledWith( - expect.objectContaining({ - activeFiltersConfig: { - deleteTitle: 'Reset filters', - filters: [ - { - category: 'Patch status', - chips: [ - { - id: 'eq:0', - name: 'Systems up to date', - value: 'eq:0', - }, - ], - id: 'packages_updatable', - }, - { - category: 'Status', - chips: [ - { - id: true, - name: 'Stale', - value: true, - }, - { - id: false, - name: 'Fresh', - value: false, - }, - ], - id: 'stale', - }, - ], - onDelete: expect.any(Function), - showDeleteButton: true, - }, - }), - {}, - ); - }); - - it('should show reset when inventory-based operating system filters are active', async () => { + it('should show clear when inventory-based operating system filters are active', async () => { const filteredState = { ...mockState, SystemsStore: { queryParams: { - filter: { os: ['RHEL 8.8'], stale: [true, false] }, + filter: { os: ['RHEL 8.8'] }, }, }, }; @@ -341,7 +247,7 @@ describe('SystemsTable', () => { expect(InventoryTable).toHaveBeenCalledWith( expect.objectContaining({ activeFiltersConfig: expect.objectContaining({ - deleteTitle: 'Reset filters', + deleteTitle: 'Clear filters', showDeleteButton: true, }), customFilters: expect.objectContaining({ @@ -360,7 +266,7 @@ describe('SystemsTable', () => { ); }); - it('should show reset before an inventory-backed fetch resolves', async () => { + it('should show clear before an inventory-backed fetch resolves', async () => { let resolveFetch; fetchSystems.mockImplementationOnce( () => @@ -381,7 +287,7 @@ describe('SystemsTable', () => { page: 1, per_page: 20, patchParams: { - filter: { stale: [true, false] }, + filter: {}, selectedTags: [], systemProfile: {}, }, @@ -399,7 +305,7 @@ describe('SystemsTable', () => { expect(InventoryTable).toHaveBeenLastCalledWith( expect.objectContaining({ activeFiltersConfig: expect.objectContaining({ - deleteTitle: 'Reset filters', + deleteTitle: 'Clear filters', showDeleteButton: true, }), }), diff --git a/src/SmartComponents/Systems/SystemsTable.js b/src/SmartComponents/Systems/SystemsTable.js index 525565e18..aa069f1bd 100644 --- a/src/SmartComponents/Systems/SystemsTable.js +++ b/src/SmartComponents/Systems/SystemsTable.js @@ -127,7 +127,8 @@ const SystemsTable = ({ return { ...config, - showDeleteButton: config.showDeleteButton || hasInventoryFilterDeviation, + showDeleteButton: + config.showDeleteButton || config.filters.length > 0 || hasInventoryFilterDeviation, }; }, [deleteFilters, filter, hasInventoryFilterDeviation]); diff --git a/src/Utilities/constants.js b/src/Utilities/constants.js index 5a66178d0..14b28b39e 100644 --- a/src/Utilities/constants.js +++ b/src/Utilities/constants.js @@ -54,7 +54,7 @@ export const packagesListDefaultFilters = { }; export const systemsListDefaultFilters = { - filter: { stale: [true, false] }, + filter: {}, }; export const emptyDefaultFilters = { diff --git a/src/store/Reducers/SystemsStore.js b/src/store/Reducers/SystemsStore.js index 1f07aa7f3..bf0edaeb8 100644 --- a/src/store/Reducers/SystemsStore.js +++ b/src/store/Reducers/SystemsStore.js @@ -8,9 +8,6 @@ const initialState = { queryParams: { page: 1, perPage: 20, - filter: { - stale: [true, false], - }, }, };