Improve test coverage for CatalogTable

Signed-off-by: Alex Crome <afscrome@users.noreply.github.com>
This commit is contained in:
Alex Crome
2022-03-30 19:52:24 +01:00
parent 4e69339444
commit 97f6300460
3 changed files with 148 additions and 27 deletions
@@ -169,6 +169,10 @@ describe('DefaultCatalogPage', () => {
expect(columnHeaderLabels).toEqual([
'Name',
'System',
'Owner',
'Type',
'Lifecycle',
'Description',
'Tags',
'Actions',
@@ -25,6 +25,7 @@ import {
MockEntityListContextProvider,
starredEntitiesApiRef,
UserListFilter,
EntityKindFilter,
MockStarredEntitiesApi,
} from '@backstage/plugin-catalog-react';
import { renderInTestApp, TestApiRegistry } from '@backstage/test-utils';
@@ -176,4 +177,137 @@ describe('CatalogTable component', () => {
expect(window.open).toHaveBeenCalledWith('https://other.place', '_blank');
});
it.each([
{
kind: 'api',
expectedColumns: [
'Name',
'System',
'Owner',
'Type',
'Lifecycle',
'Description',
'Tags',
'Actions',
],
},
{
kind: 'component',
expectedColumns: [
'Name',
'System',
'Owner',
'Type',
'Lifecycle',
'Description',
'Tags',
'Actions',
],
},
{
kind: 'domain',
expectedColumns: ['Name', 'Owner', 'Description', 'Tags', 'Actions'],
},
{
kind: 'group',
expectedColumns: ['Name', 'Type', 'Description', 'Tags', 'Actions'],
},
{
kind: 'location',
expectedColumns: ['Name', 'Type', 'Description', 'Tags', 'Actions'],
},
{
kind: 'resource',
expectedColumns: [
'Name',
'System',
'Owner',
'Type',
'Lifecycle',
'Description',
'Tags',
'Actions',
],
},
{
kind: 'system',
expectedColumns: ['Name', 'Owner', 'Description', 'Tags', 'Actions'],
},
{
kind: 'template',
expectedColumns: ['Name', 'Type', 'Description', 'Tags', 'Actions'],
},
{
kind: 'user',
expectedColumns: ['Name', 'Description', 'Tags', 'Actions'],
},
{
kind: 'custom',
expectedColumns: [
'Name',
'System',
'Owner',
'Type',
'Lifecycle',
'Description',
'Tags',
'Actions',
],
},
{
kind: null,
expectedColumns: [
'Name',
'System',
'Owner',
'Type',
'Lifecycle',
'Description',
'Tags',
'Actions',
],
},
])(
'should render correct columns with kind filter $kind',
async ({ kind, expectedColumns }) => {
const { getAllByRole } = await renderInTestApp(
<ApiProvider apis={mockApis}>
<MockEntityListContextProvider
value={{
entities,
filters: {
kind: kind ? new EntityKindFilter(kind) : undefined,
},
}}
>
<CatalogTable />
</MockEntityListContextProvider>
</ApiProvider>,
{
mountedRoutes: {
'/catalog/:namespace/:kind/:name': entityRouteRef,
},
},
);
const columnHeader = getAllByRole('button').filter(
c => c.tagName === 'SPAN',
);
const columnHeaderLabels = columnHeader.map(c => c.textContent);
expect(columnHeaderLabels).toEqual(expectedColumns);
// expect(columnHeaderLabels).toEqual([
// 'Name',
// 'System',
// 'Owner',
// 'Type',
// 'Lifecycle',
// 'Description',
// 'Tags',
// 'Actions'
// ]);
},
20_000,
);
});
@@ -74,39 +74,22 @@ export const CatalogTable = (props: CatalogTableProps) => {
function createEntitySpecificColumns(): TableColumn<CatalogTableRow>[] {
switch (filters.kind?.value) {
case 'api':
return [
columnFactories.createSystemColumn(),
columnFactories.createOwnerColumn(),
columnFactories.createSpecTypeColumn(),
columnFactories.createSpecLifecycleColumn(),
];
case 'component':
return [
columnFactories.createSystemColumn(),
columnFactories.createOwnerColumn(),
columnFactories.createSpecTypeColumn(),
columnFactories.createSpecLifecycleColumn(),
];
case 'user':
return [];
case 'domain':
return [columnFactories.createOwnerColumn()];
case 'group':
return [columnFactories.createSpecTypeColumn()];
case 'location':
return [columnFactories.createSpecTypeColumn()];
case 'resource':
return [
columnFactories.createSystemColumn(),
columnFactories.createOwnerColumn(),
columnFactories.createSpecTypeColumn(),
columnFactories.createSpecLifecycleColumn(),
];
case 'system':
return [columnFactories.createOwnerColumn()];
case 'group':
case 'location':
case 'template':
return [columnFactories.createSpecTypeColumn()];
default:
return [];
return [
columnFactories.createSystemColumn(),
columnFactories.createOwnerColumn(),
columnFactories.createSpecTypeColumn(),
columnFactories.createSpecLifecycleColumn(),
];
}
}
}, [filters.kind?.value]);