From 2620fb2f9569368fdaafe3924c02f2f5a2671818 Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Thu, 5 Dec 2019 13:33:40 +0100 Subject: [PATCH] fix(util-registry): fix initAll and tests --- .../services/util-registry/util-registry.js | 19 +++++++++++++------ .../util-registry/util-registry.spec.js | 14 ++++++++------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/frontend/src/services/util-registry/util-registry.js b/frontend/src/services/util-registry/util-registry.js index 24251414e..e035903fa 100644 --- a/frontend/src/services/util-registry/util-registry.js +++ b/frontend/src/services/util-registry/util-registry.js @@ -51,18 +51,25 @@ export class UtilRegistry { } initAll(scope) { + let startedInstances = []; const setupInstances = this._registeredUtils.map((util) => this.setup(util, scope)).flat(); - setupInstances - .filter((instance) => instance && typeof instance.start === 'function') - .forEach((instance) => instance.start()); + setupInstances.forEach((utilInstance) => { + if (utilInstance) { + const instance = utilInstance.instance; + if (instance && typeof instance.start === 'function') { + instance.start(); + startedInstances.push(instance); + } + } + }); if (DEBUG_MODE > 1) { console.info('initialized js util instances:'); console.table(setupInstances); } - return setupInstances; + return startedInstances; } setup(util, scope = document.body) { @@ -91,13 +98,13 @@ export class UtilRegistry { console.info('Got utility instance for utility "' + util.name + '"', { utilInstance }); } - instances.push(utilInstance); + instances.push({ util: util, scope: scope, element: element, instance: utilInstance }); } }); } this._activeUtilInstances.push(...instances); - return instances.map((instance) => ({ scope: scope, util: util, ...instance })); + return instances; } find(name) { diff --git a/frontend/src/services/util-registry/util-registry.spec.js b/frontend/src/services/util-registry/util-registry.spec.js index cb9ef95b7..510033cf8 100644 --- a/frontend/src/services/util-registry/util-registry.spec.js +++ b/frontend/src/services/util-registry/util-registry.spec.js @@ -97,8 +97,12 @@ describe('UtilRegistry', () => { const setupUtilities = utilRegistry.setup(TestUtil1, testScope); expect(setupUtilities).toBeTruthy(); - expect(setupUtilities[0].app).toBe(fakeApp); - expect(setupUtilities[1].app).toBe(fakeApp); + setupUtilities.forEach((setupUtility) => { + expect(setupUtility).toBeTruthy(); + expect(setupUtility.instance).toBeTruthy(); + }); + expect(setupUtilities[0].instance.app).toBe(fakeApp); + expect(setupUtilities[1].instance.app).toBe(fakeApp); }); }); }); @@ -157,16 +161,14 @@ describe('UtilRegistry', () => { const initializedInstances = utilRegistry.initAll(testScope); expect(initializedInstances.length).toBe(2); - expect(initializedInstances.map((instance) => instance.util)).toEqual([TestUtil3,TestUtil3]); }); it('should not start instances that do not provide a start function', () => { utilRegistry.register(TestUtil1); utilRegistry.register(TestUtil2); - const initializedInstances = utilRegistry.initAll(testScope); + const startedInstances = utilRegistry.initAll(testScope); - expect(initializedInstances.length).toBe(2); - expect(initializedInstances.map((instance) => instance.util)).toEqual([TestUtil1,TestUtil2]); + expect(startedInstances.length).toBe(0); }); }); });