Skip to content

Commit

Permalink
fix(WorkloadsTable): RHINENG-9185 filter by uuid
Browse files Browse the repository at this point in the history
  • Loading branch information
xmicha82 committed Aug 7, 2024
1 parent 62779e8 commit 80c0991
Show file tree
Hide file tree
Showing 2 changed files with 260 additions and 6 deletions.
23 changes: 17 additions & 6 deletions src/Components/Common/Tables.js
Original file line number Diff line number Diff line change
Expand Up @@ -299,16 +299,27 @@ export const passFilterWorkloads = (workloads, filters) => {
workloads.metadata.hits_by_severity,
'general'
);

return Object.entries(filters).every(([filterKey, filterValue]) => {
switch (filterKey) {
case 'cluster_name':
return (workloads.cluster.display_name || workloads.cluster.uuid)
.toLowerCase()
.includes(filterValue.toLowerCase());
return (
workloads.cluster.display_name
.toLowerCase()
.includes(filterValue.toLowerCase()) ||
workloads.cluster.uuid
.toLowerCase()
.includes(filterValue.toLowerCase())
);
case 'namespace_name':
return (workloads.namespace.name || workloads.namespace.uuid)
.toLowerCase()
.includes(filterValue.toLowerCase());
return (
workloads.namespace.name
.toLowerCase()
.includes(filterValue.toLowerCase()) ||
workloads.namespace.uuid
.toLowerCase()
.includes(filterValue.toLowerCase())
);
case 'severity':
return (
filterValue.length === 0 ||
Expand Down
243 changes: 243 additions & 0 deletions src/Components/Common/Tables.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
import { passFilterWorkloads } from './Tables';
import { sortBy } from 'lodash';

const filterItems = (workloads, filters) =>
sortBy(
workloads.filter((workload) => passFilterWorkloads(workload, filters)),
(x) => x.cluster.uuid
);

describe('Tables', () => {
describe('passFilterWorkloads', () => {
const filters = { cluster_name: '', namespace_name: '' };

const items = [
{
cluster: {
uuid: '01',
display_name: 'Cluster 1',
},
namespace: {
uuid: '01',
name: 'testspace',
},
metadata: {
hits_by_severity: {
1: 0,
2: 500,
3: 0,
4: 0,
},
},
},
{
cluster: {
uuid: '02',
display_name: 'Cluster 2',
},
namespace: {
uuid: '01',
name: 'testspace',
},
metadata: {
hits_by_severity: {
1: 0,
2: 500,
3: 0,
4: 0,
},
},
},
{
cluster: {
uuid: '03',
display_name: 'Cluster 3',
},
namespace: {
uuid: '02',
name: 'testspace 2',
},
metadata: {
hits_by_severity: {
1: 0,
2: 500,
3: 0,
4: 0,
},
},
},
];

it('passes all items without filters', () => {
expect(filterItems(items, filters)).toEqual(items);
});

it('filters based on cluster name', () => {
const filters = { cluster_name: 'Cluster 1', namespace_name: '' };

expect(filterItems(items, filters)).toEqual([
expect.objectContaining({
cluster: {
uuid: '01',
display_name: 'Cluster 1',
},
}),
]);
});

it('filters based on UUID without cluster name', () => {
const items = [
{
cluster: {
uuid: '01',
display_name: '',
},
namespace: {
uuid: '01',
name: 'testspace',
},
metadata: {
hits_by_severity: {
1: 0,
2: 500,
3: 0,
4: 0,
},
},
},
{
cluster: {
uuid: '02',
display_name: '',
},
namespace: {
uuid: '01',
name: 'testspace',
},
metadata: {
hits_by_severity: {
1: 0,
2: 500,
3: 0,
4: 0,
},
},
},
];

const filters = {
cluster_name: '01',
namespace_name: '',
};

expect(filterItems(items, filters)).toEqual([
expect.objectContaining({
cluster: {
uuid: '01',
display_name: '',
},
}),
]);
});

it('filters based on UUID with cluster name', () => {
const filters = {
cluster_name: '01',
namespace_name: '',
};

expect(filterItems(items, filters)).toEqual([
expect.objectContaining({
cluster: {
uuid: '01',
display_name: 'Cluster 1',
},
}),
]);
});

it('filters based on namespace name', () => {
const filters = { cluster_name: '', namespace_name: 'testspace 2' };

expect(filterItems(items, filters)).toEqual([
expect.objectContaining({
namespace: {
uuid: '02',
name: 'testspace 2',
},
}),
]);
});

it('filters based on UUID without namespace name', () => {
const items = [
{
cluster: {
uuid: '01',
display_name: 'Cluster 1',
},
namespace: {
uuid: '01',
name: '',
},
metadata: {
hits_by_severity: {
1: 0,
2: 500,
3: 0,
4: 0,
},
},
},
{
cluster: {
uuid: '02',
display_name: 'Cluster 2',
},
namespace: {
uuid: '02',
name: '',
},
metadata: {
hits_by_severity: {
1: 0,
2: 500,
3: 0,
4: 0,
},
},
},
];

const filters = {
cluster_name: '',
namespace_name: '01',
};

expect(filterItems(items, filters)).toEqual([
expect.objectContaining({
namespace: {
uuid: '01',
name: '',
},
}),
]);
});

it('filters based on UUID with namespace name', () => {
const filters = {
cluster_name: '',
namespace_name: '02',
};

expect(filterItems(items, filters)).toEqual([
expect.objectContaining({
namespace: {
uuid: '02',
name: 'testspace 2',
},
}),
]);
});
});
});

0 comments on commit 80c0991

Please sign in to comment.