Improve test coverage for CatalogTable
Signed-off-by: Alex Crome <afscrome@users.noreply.github.com>
This commit is contained in:
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user