diff --git a/packages/test-utils/report.api.md b/packages/test-utils/report.api.md index a551d54c62..15625adb21 100644 --- a/packages/test-utils/report.api.md +++ b/packages/test-utils/report.api.md @@ -91,7 +91,7 @@ export class MockAnalyticsApi implements AnalyticsApi { // @public export namespace mockApis { - export function config(options?: { data?: JsonObject }): jest.Mocked; + export function config(options?: { data?: JsonObject }): ConfigApi; export namespace config { const factory: ( options?: diff --git a/packages/test-utils/src/testUtils/apis/mockApis.test.tsx b/packages/test-utils/src/testUtils/apis/mockApis.test.tsx index b7a78867f8..ebbdb41884 100644 --- a/packages/test-utils/src/testUtils/apis/mockApis.test.tsx +++ b/packages/test-utils/src/testUtils/apis/mockApis.test.tsx @@ -20,15 +20,13 @@ describe('mockApis', () => { describe('config', () => { const data = { backend: { baseUrl: 'http://test.com' } }; - it('can create an instance and make assertions on it', () => { + it('can create an instance', () => { const empty = mockApis.config(); const notEmpty = mockApis.config({ data }); expect(empty.getOptional('backend.baseUrl')).toBeUndefined(); - expect(empty.getOptional).toHaveBeenCalledTimes(1); expect(notEmpty.getOptional('backend.baseUrl')).toEqual( 'http://test.com', ); - expect(notEmpty.getOptional).toHaveBeenCalledTimes(1); }); it('can create a mock and make assertions on it', async () => { diff --git a/packages/test-utils/src/testUtils/apis/mockApis.ts b/packages/test-utils/src/testUtils/apis/mockApis.ts index d084fae332..eed5a88012 100644 --- a/packages/test-utils/src/testUtils/apis/mockApis.ts +++ b/packages/test-utils/src/testUtils/apis/mockApis.ts @@ -18,26 +18,13 @@ import { ConfigReader } from '@backstage/config'; import { ApiFactory, ApiRef, + ConfigApi, configApiRef, createApiFactory, } from '@backstage/core-plugin-api'; import { JsonObject } from '@backstage/types'; import { ApiMock } from './ApiMock'; -/** @internal */ -function simpleInstance( - _ref: ApiRef, - instance: TApi, - mockSkeleton: () => jest.Mocked, -): jest.Mocked { - const mock = mockSkeleton(); - const result = Object.create(instance) as any; - for (const [key, impl] of Object.entries(mock)) { - result[key] = (impl as any).mockImplementation((instance as any)[key]); - } - return result; -} - /** @internal */ function simpleFactory( ref: ApiRef, @@ -116,24 +103,6 @@ function simpleMock( * ``` */ export namespace mockApis { - const configMockSkeleton = () => ({ - has: jest.fn(), - keys: jest.fn(), - get: jest.fn(), - getOptional: jest.fn(), - getConfig: jest.fn(), - getOptionalConfig: jest.fn(), - getConfigArray: jest.fn(), - getOptionalConfigArray: jest.fn(), - getNumber: jest.fn(), - getOptionalNumber: jest.fn(), - getBoolean: jest.fn(), - getOptionalBoolean: jest.fn(), - getString: jest.fn(), - getOptionalString: jest.fn(), - getStringArray: jest.fn(), - getOptionalStringArray: jest.fn(), - }); /** * Fake implementation of {@link @backstage/frontend-plugin-api#ConfigApi} * with optional data supplied. @@ -153,12 +122,8 @@ export namespace mockApis { * ); * ``` */ - export function config(options?: { data?: JsonObject }) { - return simpleInstance( - configApiRef, - new ConfigReader(options?.data, 'mock-config'), - configMockSkeleton, - ); + export function config(options?: { data?: JsonObject }): ConfigApi { + return new ConfigReader(options?.data, 'mock-config'); } /** * Mock helpers for {@link @backstage/frontend-plugin-api#ConfigApi}. @@ -183,6 +148,23 @@ export namespace mockApis { * * @public */ - export const mock = simpleMock(configApiRef, configMockSkeleton); + export const mock = simpleMock(configApiRef, () => ({ + has: jest.fn(), + keys: jest.fn(), + get: jest.fn(), + getOptional: jest.fn(), + getConfig: jest.fn(), + getOptionalConfig: jest.fn(), + getConfigArray: jest.fn(), + getOptionalConfigArray: jest.fn(), + getNumber: jest.fn(), + getOptionalNumber: jest.fn(), + getBoolean: jest.fn(), + getOptionalBoolean: jest.fn(), + getString: jest.fn(), + getOptionalString: jest.fn(), + getStringArray: jest.fn(), + getOptionalStringArray: jest.fn(), + })); } }