From 6be405bde435632fe5655d262cfa0c215bca1c7c Mon Sep 17 00:00:00 2001 From: Joon Park Date: Tue, 18 Jan 2022 16:40:02 +0000 Subject: [PATCH] Refactor tests to use mock api Signed-off-by: Joon Park --- packages/app/package.json | 2 +- packages/test-utils/package.json | 4 +-- plugins/catalog-react/package.json | 6 ++-- plugins/catalog/package.json | 3 +- .../EntityContextMenu.test.tsx | 30 +++++++++++++------ .../EntityLayout/EntityLayout.test.tsx | 8 ++--- 6 files changed, 32 insertions(+), 21 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index 7946d8fd14..ffa5cc6cd2 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -69,7 +69,7 @@ "zen-observable": "^0.8.15" }, "devDependencies": { - "@backstage/plugin-permission-react": "^0.2.2", + "@backstage/plugin-permission-react": "^0.3.0-next.0", "@backstage/test-utils": "^0.2.3-next.0", "@rjsf/core": "^3.2.1", "@testing-library/cypress": "^8.0.2", diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index ad47b35964..32d7010f53 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -32,8 +32,8 @@ "@backstage/config": "^0.1.13-next.0", "@backstage/core-app-api": "^0.5.0-next.0", "@backstage/core-plugin-api": "^0.6.0-next.0", - "@backstage/plugin-permission-common": "^0.3.1", - "@backstage/plugin-permission-react": "^0.2.2", + "@backstage/plugin-permission-common": "^0.4.0-next.0", + "@backstage/plugin-permission-react": "^0.3.0-next.0", "@backstage/theme": "^0.2.14", "@backstage/types": "^0.1.1", "@material-ui/core": "^4.12.2", diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index c48c704700..87d6f7ada8 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -35,8 +35,8 @@ "@backstage/core-plugin-api": "^0.6.0-next.0", "@backstage/errors": "^0.2.0", "@backstage/integration": "^0.7.2-next.0", - "@backstage/plugin-permission-common": "^0.3.1", - "@backstage/plugin-permission-react": "^0.2.2", + "@backstage/plugin-permission-common": "^0.4.0-next.0", + "@backstage/plugin-permission-react": "^0.3.0-next.0", "@backstage/types": "^0.1.1", "@backstage/version-bridge": "^0.1.1", "@material-ui/core": "^4.12.2", @@ -56,7 +56,7 @@ "devDependencies": { "@backstage/cli": "^0.12.0-next.0", "@backstage/core-app-api": "^0.5.0-next.0", - "@backstage/plugin-catalog-common": "^0.1.0", + "@backstage/plugin-catalog-common": "^0.1.1-next.0", "@backstage/test-utils": "^0.2.3-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index a2ed0db9c8..2ac01025cf 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -37,7 +37,7 @@ "@backstage/core-plugin-api": "^0.6.0-next.0", "@backstage/errors": "^0.2.0", "@backstage/integration-react": "^0.1.19-next.0", - "@backstage/plugin-catalog-common": "^0.1.0", + "@backstage/plugin-catalog-common": "^0.1.1-next.0", "@backstage/plugin-catalog-react": "^0.6.12-next.0", "@backstage/theme": "^0.2.14", "@material-ui/core": "^4.12.2", @@ -57,6 +57,7 @@ "@backstage/cli": "^0.12.0-next.0", "@backstage/core-app-api": "^0.5.0-next.0", "@backstage/dev-utils": "^0.2.18-next.0", + "@backstage/plugin-permission-react": "^0.3.0-next.0", "@backstage/test-utils": "^0.2.3-next.0", "@testing-library/jest-dom": "^5.10.1", "@testing-library/react": "^11.2.5", diff --git a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.test.tsx b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.test.tsx index 3e3848861a..f16a17bc1d 100644 --- a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.test.tsx +++ b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.test.tsx @@ -14,24 +14,36 @@ * limitations under the License. */ -import { renderInTestApp } from '@backstage/test-utils'; +import { EntityProvider } from '@backstage/plugin-catalog-react'; +import { permissionApiRef } from '@backstage/plugin-permission-react'; +import { + MockPermissionApi, + renderInTestApp, + TestApiProvider, +} from '@backstage/test-utils'; import SearchIcon from '@material-ui/icons/Search'; import { fireEvent, screen } from '@testing-library/react'; import * as React from 'react'; import { EntityContextMenu } from './EntityContextMenu'; -jest.mock('@backstage/plugin-catalog-react', () => ({ - ...jest.requireActual('@backstage/plugin-catalog-react'), - useEntityPermission: () => ({ isAllowed: true }), -})); +const mockPermissionApi = new MockPermissionApi(); + +function render(children: React.ReactNode) { + return renderInTestApp( + + + , + ); +} describe('ComponentContextMenu', () => { it('should call onUnregisterEntity on button click', async () => { const mockCallback = jest.fn(); - await renderInTestApp( - , - ); + await render(); const button = await screen.findByTestId('menu-button'); expect(button).toBeInTheDocument(); @@ -51,7 +63,7 @@ describe('ComponentContextMenu', () => { onClick: jest.fn(), }; - await renderInTestApp( + await render( ({ - ...jest.requireActual('@backstage/plugin-catalog-react'), - useEntityPermission: () => ({ isAllowed: true }), -})); - const mockEntity = { kind: 'MyKind', metadata: { @@ -55,6 +52,7 @@ const mockApis = TestApiRegistry.from( starredEntitiesApiRef, new DefaultStarredEntitiesApi({ storageApi: MockStorageApi.create() }), ], + [permissionApiRef, new MockPermissionApi()], ); describe('EntityLayout', () => {