From 1b23beb5b54a9db26393edb3354a3ac4b5787c32 Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Tue, 14 Jan 2025 17:50:45 -0500 Subject: [PATCH] fix(RHINENG-13682): Update to remove All systems chip To test: - Go to the Available tab - Click Select systems on a task - Use the eligibility filter Test by removing the Eligible systems chip. It should remove the chip and apply All systems filter with no chip. Before, we swapped between the All systems and Eligible systems chips. --- .../SystemTable/SelectCustomFilter.js | 5 ++- .../SystemTable/SystemTable.js | 19 +++++---- .../__tests__/SelectCustomFilter.tests.js | 2 +- .../SystemTable/__tests__/helpers.test.js | 42 +++++++++++++++---- src/SmartComponents/SystemTable/helpers.js | 9 ++-- 5 files changed, 55 insertions(+), 22 deletions(-) diff --git a/src/SmartComponents/SystemTable/SelectCustomFilter.js b/src/SmartComponents/SystemTable/SelectCustomFilter.js index 65f90c92..a5de38f5 100644 --- a/src/SmartComponents/SystemTable/SelectCustomFilter.js +++ b/src/SmartComponents/SystemTable/SelectCustomFilter.js @@ -18,6 +18,7 @@ const SelectCustomFilter = ({ const handleSelectChange = (value) => { setFilterData(findFilterData(value, options)); + setOpen(false); }; const toggle = (toggleRef) => ( @@ -29,7 +30,7 @@ const SelectCustomFilter = ({ width: 'auto', }} > - {options.find((item) => item.value === selectedValue.value)?.label} + {options.find((item) => item.value === selectedValue)?.label} ); @@ -44,7 +45,7 @@ const SelectCustomFilter = ({ key={filterId} onSelect={(event, optionName) => handleSelectChange(optionName)} onOpenChange={(isOpen) => setOpen(isOpen)} - selected={selectedValue.label} + selected={options.find((item) => item.value === selectedValue)?.label} toggle={toggle} shouldFocusToggleOnSelect > diff --git a/src/SmartComponents/SystemTable/SystemTable.js b/src/SmartComponents/SystemTable/SystemTable.js index 89e87a61..50fab173 100644 --- a/src/SmartComponents/SystemTable/SystemTable.js +++ b/src/SmartComponents/SystemTable/SystemTable.js @@ -109,7 +109,7 @@ const SystemTable = ({ ), @@ -117,13 +117,16 @@ const SystemTable = ({ }; const activeFiltersConfig = { - filters: [ - { - id: 'Task eligibility', - category: 'Task eligibility', - chips: [{ name: eligibility.label, value: eligibility.value }], - }, - ], + filters: + eligibility.value === ELIGIBLE_SYSTEMS_VALUE + ? [ + { + id: 'Task eligibility', + category: 'Task eligibility', + chips: [{ name: eligibility.label, value: eligibility.value }], + }, + ] + : [], onDelete: (event, itemsToRemove, isAll) => { if (isAll) { setEligibility(eligibilityFilterItems[0]); diff --git a/src/SmartComponents/SystemTable/__tests__/SelectCustomFilter.tests.js b/src/SmartComponents/SystemTable/__tests__/SelectCustomFilter.tests.js index d37847c3..84aa7fb0 100644 --- a/src/SmartComponents/SystemTable/__tests__/SelectCustomFilter.tests.js +++ b/src/SmartComponents/SystemTable/__tests__/SelectCustomFilter.tests.js @@ -17,7 +17,7 @@ describe('SelectCustomFilter component', () => { render( { const workloadFilters = []; const activeFiltersConfig = { filters: {} }; - it('should return an default filterstring when no filters given', () => { + it('should return a default filterstring when no filters given', () => { expect( buildFilterSortString( limit, @@ -21,6 +21,30 @@ describe('buildFilterSortString', () => { workloadFilters, activeFiltersConfig ) + ).toEqual('?limit=25&offset=0&sort=name&all_systems=true'); + }); + + it('should not return all_systems=true when eligible systems filter applied', () => { + let activefilters = { + filters: [ + { + id: 'Task eligibility', + category: 'Task eligibility', + chips: [{ name: 'Eligible Systems', value: 'eligible-systems' }], + }, + ], + }; + expect( + buildFilterSortString( + limit, + offset, + orderBy, + orderDirection, + {}, + tags, + workloadFilters, + activefilters + ) ).toEqual('?limit=25&offset=0&sort=name'); }); @@ -44,7 +68,9 @@ describe('buildFilterSortString', () => { workloadFilters, activeFiltersConfig ) - ).toEqual('?limit=25&offset=0&sort=name&operating_system=RHEL|9.4'); + ).toEqual( + '?limit=25&offset=0&sort=name&operating_system=RHEL|9.4&all_systems=true' + ); filters = { osFilter: { @@ -66,7 +92,9 @@ describe('buildFilterSortString', () => { workloadFilters, activeFiltersConfig ) - ).toEqual('?limit=25&offset=0&sort=name&operating_system=RHEL|9.3'); + ).toEqual( + '?limit=25&offset=0&sort=name&operating_system=RHEL|9.3&all_systems=true' + ); filters = { osFilter: { @@ -99,7 +127,7 @@ describe('buildFilterSortString', () => { activeFiltersConfig ) ).toEqual( - '?limit=25&offset=0&sort=name&operating_system=RHEL|9.4,RHEL|9.3,RHEL|9.9,RHEL|8.4,AlmaLinux|8.4,AlmaLinux|8.5' + '?limit=25&offset=0&sort=name&operating_system=RHEL|9.4,RHEL|9.3,RHEL|9.9,RHEL|8.4,AlmaLinux|8.4,AlmaLinux|8.5&all_systems=true' ); filters = { @@ -132,7 +160,7 @@ describe('buildFilterSortString', () => { activeFiltersConfig ) ).toEqual( - '?limit=25&offset=0&sort=name&operating_system=RHEL|9.5,RHEL|9.4,RHEL|9.3,RHEL|9.2,RHEL|9.1,RHEL|9.0,Cent Os Linux|8.4,Cent Os Linux|8.5' + '?limit=25&offset=0&sort=name&operating_system=RHEL|9.5,RHEL|9.4,RHEL|9.3,RHEL|9.2,RHEL|9.1,RHEL|9.0,Cent Os Linux|8.4,Cent Os Linux|8.5&all_systems=true' ); filters = { @@ -176,7 +204,7 @@ describe('buildFilterSortString', () => { activeFiltersConfig ) ).toEqual( - '?limit=25&offset=0&sort=name&operating_system=RHEL|9.4,RHEL|9.3,RHEL|9.9,RHEL|8.4,Alma Linux|8.4,Alma Linux|8.5,Cent Os|8.4,Cent Os|8.5,Cent Os|30.99,Cent Os|30.88' + '?limit=25&offset=0&sort=name&operating_system=RHEL|9.4,RHEL|9.3,RHEL|9.9,RHEL|8.4,Alma Linux|8.4,Alma Linux|8.5,Cent Os|8.4,Cent Os|8.5,Cent Os|30.99,Cent Os|30.88&all_systems=true' ); filters = { @@ -209,7 +237,7 @@ describe('buildFilterSortString', () => { activeFiltersConfig ) ).toEqual( - '?limit=25&offset=0&sort=name&operating_system=RHEL|9.4,RHEL|9.3,RHEL|9.9,AlmaLinux|8.4,AlmaLinux|8.5' + '?limit=25&offset=0&sort=name&operating_system=RHEL|9.4,RHEL|9.3,RHEL|9.9,AlmaLinux|8.4,AlmaLinux|8.5&all_systems=true' ); }); }); diff --git a/src/SmartComponents/SystemTable/helpers.js b/src/SmartComponents/SystemTable/helpers.js index a129d456..05aa68c7 100644 --- a/src/SmartComponents/SystemTable/helpers.js +++ b/src/SmartComponents/SystemTable/helpers.js @@ -1,4 +1,4 @@ -import { ALL_SYSTEMS_VALUE } from './constants'; +import { ELIGIBLE_SYSTEMS_VALUE } from './constants'; const buildSortString = (orderBy, orderDirection) => { let sortString = orderBy ? '&sort=' : ''; @@ -87,9 +87,10 @@ const buildWorkloadFiltersString = (filters) => { }; const buildEligibilityFilterString = ({ filters }) => { - return filters[0]?.chips[0]?.value === ALL_SYSTEMS_VALUE - ? '&all_systems=true' - : ''; + return filters[0]?.chips && + filters[0]?.chips[0]?.value === ELIGIBLE_SYSTEMS_VALUE + ? '' + : '&all_systems=true'; }; // TODO this should be based on a URLSearchParams object and use its toString() function