diff --git a/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts b/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts index cd67b33753..d1e670330e 100644 --- a/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts +++ b/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { useAsync, useMountEffect } from '@react-hookz/web'; -import { useApiHolder, useElementFilter } from '@backstage/core-plugin-api'; +import { useApi, useElementFilter } from '@backstage/core-plugin-api'; import { formFieldsApiRef } from '../next'; import { FieldExtensionOptions } from '../extensions'; import { @@ -33,10 +33,9 @@ export const useCustomFieldExtensions = < outlet: React.ReactNode, ) => { // Get custom fields created with FormFieldBlueprint - const apiHolder = useApiHolder(); - const formFieldsApi = apiHolder.get(formFieldsApiRef); + const formFieldsApi = useApi(formFieldsApiRef); const [{ result: blueprintFields }, methods] = useAsync( - formFieldsApi?.getFormFields ?? (async () => []), + formFieldsApi.getFormFields, [], ); useMountEffect(methods.execute); diff --git a/plugins/scaffolder/src/components/Router/Router.test.tsx b/plugins/scaffolder/src/components/Router/Router.test.tsx index c062c723cf..9c752ed3c1 100644 --- a/plugins/scaffolder/src/components/Router/Router.test.tsx +++ b/plugins/scaffolder/src/components/Router/Router.test.tsx @@ -15,7 +15,11 @@ */ import React from 'react'; import { Router } from './Router'; -import { renderInTestApp } from '@backstage/test-utils'; +import { + renderInTestApp, + TestApiProvider, + TestAppOptions, +} from '@backstage/test-utils'; import { createScaffolderFieldExtension, ScaffolderFieldExtensions, @@ -26,12 +30,26 @@ import { ScaffolderLayouts, } from '@backstage/plugin-scaffolder-react'; import { TemplateListPage, TemplateWizardPage } from '../../alpha/components'; +import { formFieldsApiRef } from '@backstage/plugin-scaffolder-react/alpha'; jest.mock('../../alpha/components', () => ({ TemplateWizardPage: jest.fn(() => null), TemplateListPage: jest.fn(() => null), })); +const wrapInApisAndRender = ( + element: React.ReactElement, + opts?: TestAppOptions, +) => + renderInTestApp( + [] }]]} + > + {element} + , + opts, + ); + describe('Router', () => { beforeEach(() => { (TemplateWizardPage as jest.Mock).mockClear(); @@ -39,13 +57,13 @@ describe('Router', () => { }); describe('/', () => { it('should render the TemplateListPage', async () => { - await renderInTestApp(); + await wrapInApisAndRender(); expect(TemplateListPage).toHaveBeenCalled(); }); it('should render user-provided TemplateListPage', async () => { - const { getByText } = await renderInTestApp( + const { getByText } = await wrapInApisAndRender( <>foobar, @@ -62,7 +80,7 @@ describe('Router', () => { describe('/templates/:templateName', () => { it('should render the TemplateWizard page', async () => { - await renderInTestApp(, { + await wrapInApisAndRender(, { routeEntries: ['/templates/default/foo'], }); @@ -70,7 +88,7 @@ describe('Router', () => { }); it('should render user-provided TemplateWizardPage', async () => { - const { getByText } = await renderInTestApp( + const { getByText } = await wrapInApisAndRender( <>foobar, @@ -87,13 +105,14 @@ describe('Router', () => { it('should pass through the FormProps property', async () => { const transformErrorsMock = jest.fn(); - await renderInTestApp( + await wrapInApisAndRender( , + { routeEntries: ['/templates/default/foo'], }, @@ -118,7 +137,7 @@ describe('Router', () => { }), ); - await renderInTestApp( + await wrapInApisAndRender( @@ -146,7 +165,7 @@ describe('Router', () => { }), ); - await renderInTestApp( + await wrapInApisAndRender(