From e3e039ad476f756fac1eb9065ee464ce215536ed Mon Sep 17 00:00:00 2001 From: Igor Date: Thu, 14 Nov 2019 19:29:40 -0300 Subject: [PATCH] Pass services to each module, improve tests --- .../core/src/extensions/ExtensionManager.js | 4 +- .../src/extensions/ExtensionManager.test.js | 43 +++++++++++++++++++ .../appExtensions/MeasurementsPanel/index.js | 2 +- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/platform/core/src/extensions/ExtensionManager.js b/platform/core/src/extensions/ExtensionManager.js index a6ceb7c36..e5adbb85f 100644 --- a/platform/core/src/extensions/ExtensionManager.js +++ b/platform/core/src/extensions/ExtensionManager.js @@ -110,7 +110,9 @@ export default class ExtensionManager { } try { - const extensionModule = getModuleFn(); + const extensionModule = getModuleFn({ + servicesManager: this._servicesManager, + }); if (!extensionModule) { log.warn( diff --git a/platform/core/src/extensions/ExtensionManager.test.js b/platform/core/src/extensions/ExtensionManager.test.js index cfe892ef0..37b396e52 100644 --- a/platform/core/src/extensions/ExtensionManager.test.js +++ b/platform/core/src/extensions/ExtensionManager.test.js @@ -40,6 +40,30 @@ describe('ExtensionManager.js', () => { }); describe('registerExtension()', () => { + it('calls preRegistration() for extension', () => { + // SUT + const fakeExtension = { one: '1', preRegistration: jest.fn() }; + extensionManager.registerExtension(fakeExtension); + + // Assert + expect(fakeExtension.preRegistration.mock.calls.length).toBe(1); + }); + + it('calls preRegistration() passing configuration and servicesManager instance for extension', () => { + const configuration = { config: 'Some configuration' }; + extensionManager._servicesManager = { services: { TestService: {} } }; + + // SUT + const fakeExtension = { one: '1', preRegistration: jest.fn() }; + extensionManager.registerExtension(fakeExtension, configuration); + + // Assert + expect(fakeExtension.preRegistration.mock.calls[0][0]).toEqual({ + servicesManager: extensionManager._servicesManager, + configuration, + }); + }); + it('logs a warning if the extension is null or undefined', () => { const undefinedExtension = undefined; const nullExtension = null; @@ -110,6 +134,25 @@ describe('ExtensionManager.js', () => { ); }); + it('successfully passes a servicesManager instance to each module', () => { + extensionManager._servicesManager = { services: { TestService: {} } }; + + const extension = { + id: 'hello-world', + getViewportModule: jest.fn(), + getSopClassHandlerModule: jest.fn(), + getPanelModule: jest.fn(), + getToolbarModule: jest.fn(), + getCommandsModule: jest.fn(), + }; + + extensionManager.registerExtension(extension); + + expect(extension.getViewportModule.mock.calls[0][0]).toEqual({ + servicesManager: extensionManager._servicesManager, + }); + }); + it('successfully registers a module for each module type', () => { const extension = { id: 'hello-world', diff --git a/platform/viewer/src/appExtensions/MeasurementsPanel/index.js b/platform/viewer/src/appExtensions/MeasurementsPanel/index.js index 3ce151015..3e4ab4288 100644 --- a/platform/viewer/src/appExtensions/MeasurementsPanel/index.js +++ b/platform/viewer/src/appExtensions/MeasurementsPanel/index.js @@ -10,7 +10,7 @@ export default { preRegistration({ servicesManager, configuration = {} }) { init({ servicesManager, configuration }); }, - getPanelModule() { + getPanelModule({ servicesManager }) { return { menuOptions: [ {