diff --git a/src/core/public/ui_settings/__snapshots__/ui_settings_service.test.ts.snap b/src/core/public/ui_settings/__snapshots__/ui_settings_service.test.ts.snap index e30ef2fa1b14d0..c19ffd99b42e86 100644 --- a/src/core/public/ui_settings/__snapshots__/ui_settings_service.test.ts.snap +++ b/src/core/public/ui_settings/__snapshots__/ui_settings_service.test.ts.snap @@ -18,7 +18,7 @@ exports[`#start contstructs UiSettingsClient and UiSettingsApi: UiSettingsClient "calls": Array [ Array [ Object { - "api": mockConstructor { + "api": MockUiSettingsApi { "getLoadingCount$": [MockFunction] { "calls": Array [ Array [], diff --git a/src/core/public/ui_settings/ui_settings_service.test.ts b/src/core/public/ui_settings/ui_settings_service.test.ts index d47dbf4f80189d..eb66ee53e1869a 100644 --- a/src/core/public/ui_settings/ui_settings_service.test.ts +++ b/src/core/public/ui_settings/ui_settings_service.test.ts @@ -17,30 +17,44 @@ * under the License. */ +function mockClass( + module: string, + Class: { new (...args: any[]): T }, + setup: (instance: any, args: any[]) => void +) { + const MockClass = jest.fn(function(this: any, ...args: any[]) { + setup(this, args); + }); + + // define the mock name which is used in some snapshots + MockClass.mockName(`Mock${Class.name}`); + + // define the class name for the MockClass which is used in other snapshots + Object.defineProperty(MockClass, 'name', { + value: `Mock${Class.name}`, + }); + + jest.mock(module, () => ({ + [Class.name]: MockClass, + })); + + return MockClass; +} + // Mock the UiSettingsApi class import { UiSettingsApi } from './ui_settings_api'; -const MockUiSettingsApi = jest - .fn(function(this: any) { - this.stop = jest.fn(); - this.getLoadingCount$ = jest.fn().mockReturnValue({ - loadingCountObservable: true, - }); - }) - .mockName('MockUiSettingsApi'); -jest.mock('./ui_settings_api', () => ({ - UiSettingsApi: MockUiSettingsApi, -})); +const MockUiSettingsApi = mockClass('./ui_settings_api', UiSettingsApi, inst => { + inst.stop = jest.fn(); + inst.getLoadingCount$ = jest.fn().mockReturnValue({ + loadingCountObservable: true, + }); +}); // Mock the UiSettingsClient class import { UiSettingsClient } from './ui_settings_client'; -const MockUiSettingsClient = jest - .fn(function(this: any) { - this.stop = jest.fn(); - }) - .mockName('MockUiSettingsClient'); -jest.mock('./ui_settings_client', () => ({ - UiSettingsClient: MockUiSettingsClient, -})); +const MockUiSettingsClient = mockClass('./ui_settings_client', UiSettingsClient, inst => { + inst.stop = jest.fn(); +}); // Load the service import { UiSettingsService } from './ui_settings_service';