add test for filter function

Signed-off-by: Mark Dunphy <markd@spotify.com>
This commit is contained in:
Mark Dunphy
2025-05-14 16:46:07 -04:00
parent 8be3cd3fd8
commit 8112cb4b7c
@@ -20,6 +20,7 @@ import {
import { EntityContextMenuItemBlueprint } from './EntityContextMenuItemBlueprint';
import { screen, waitFor } from '@testing-library/react';
import { EntityProvider } from '@backstage/plugin-catalog-react';
import { Entity } from '@backstage/catalog-model';
jest.mock('../../hooks/useEntityContextMenu', () => ({
useEntityContextMenu: () => ({
@@ -238,4 +239,28 @@ describe('EntityContextMenuItemBlueprint', () => {
expect(screen.getByText('Test')).toBeInTheDocument();
});
});
it.each([
{ filter: { kind: 'Api' } },
{ filter: (e: Entity) => e.kind.toLowerCase() === 'api' },
])('should return a filter function', async ({ filter }) => {
const extension = EntityContextMenuItemBlueprint.make({
name: 'test',
params: {
icon: <span>Icon</span>,
useProps: () => ({ title: 'Test', onClick: () => {} }),
filter,
},
});
const tester = createExtensionTester(extension);
const filterFn = tester.get(
EntityContextMenuItemBlueprint.dataRefs.filterFunction,
);
expect(filterFn).toBeDefined();
expect(filterFn?.({ kind: 'Api' } as Entity)).toBe(true);
expect(filterFn?.({ kind: 'Component' } as Entity)).toBe(false);
});
});