From 479d78ed5c2c147de266ec9692e05a845c7f247a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 20 May 2026 08:34:28 +0200 Subject: [PATCH] Revert to catalogApiMock.mock(), only keep Entity type annotation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The InMemoryCatalogClient + initialRouteEntries approach didn't work because route params weren't being resolved by the test harness, causing getEntityByRef to receive an empty ref. The original mock with getEntityByRef: async () => entityMock works correctly. The only change from master is adding the Entity type annotation. Co-Authored-By: Claude Opus 4.6 (1M context) Signed-off-by: Fredrik Adelöw --- plugins/catalog/src/alpha/pages.test.tsx | 98 ++++++++++++++++-------- 1 file changed, 64 insertions(+), 34 deletions(-) diff --git a/plugins/catalog/src/alpha/pages.test.tsx b/plugins/catalog/src/alpha/pages.test.tsx index 3123826bd5..48eac13d5b 100644 --- a/plugins/catalog/src/alpha/pages.test.tsx +++ b/plugins/catalog/src/alpha/pages.test.tsx @@ -28,6 +28,7 @@ import { } from '@backstage/plugin-catalog-react/alpha'; import { catalogApiMock } from '@backstage/plugin-catalog-react/testUtils'; import { + catalogApiRef, entityRouteRef, MockStarredEntitiesApi, starredEntitiesApiRef, @@ -107,8 +108,8 @@ describe('Entity page', () => { ], }; - const mockCatalogApi = catalogApiMock({ - entities: [entityMock], + const mockCatalogApi = catalogApiMock.mock({ + getEntityByRef: async () => entityMock, }); const mockStarredEntitiesApi = new MockStarredEntitiesApi(); @@ -151,8 +152,10 @@ describe('Entity page', () => { .add(apidocsEntityContent); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -196,8 +199,10 @@ describe('Entity page', () => { .add(apidocsEntityContent); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -234,8 +239,10 @@ describe('Entity page', () => { }); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -285,8 +292,10 @@ describe('Entity page', () => { }); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -324,8 +333,10 @@ describe('Entity page', () => { }); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -356,8 +367,10 @@ describe('Entity page', () => { .add(overviewEntityContent); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -400,8 +413,10 @@ describe('Entity page', () => { .add(apidocsEntityContent); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -434,8 +449,10 @@ describe('Entity page', () => { .add(apidocsEntityContent); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -473,8 +490,10 @@ describe('Entity page', () => { .add(apidocsEntityContent); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -520,8 +539,10 @@ describe('Entity page', () => { .add(apidocsEntityContent); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -567,8 +588,10 @@ describe('Entity page', () => { }); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -602,8 +625,10 @@ describe('Entity page', () => { ); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -639,8 +664,10 @@ describe('Entity page', () => { ).add(customEntityHeader); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -696,8 +723,10 @@ describe('Entity page', () => { ).add(menuItem); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -749,8 +778,10 @@ describe('Entity page', () => { ).add(menuItem); await renderInTestApp(tester.reactElement(), { - apis: [mockCatalogApi, [starredEntitiesApiRef, mockStarredEntitiesApi]], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], + apis: [ + [catalogApiRef, mockCatalogApi], + [starredEntitiesApiRef, mockStarredEntitiesApi], + ], config: { app: { title: 'Custom app', @@ -851,10 +882,9 @@ describe('Entity page', () => { convertLegacyRouteRef(entityRouteRef), }, apis: [ - mockCatalogApi, + [catalogApiRef, mockCatalogApi], [starredEntitiesApiRef, mockStarredEntitiesApi], ], - initialRouteEntries: ['/catalog/default/component/artist-lookup'], }); await userEvent.click(await screen.findByTestId('menu-button'));