fix(util-registry): fix initAll and tests

This commit is contained in:
Sarah Vaupel 2019-12-05 13:33:40 +01:00 committed by Gregor Kleen
parent ea5351e483
commit 2620fb2f95
2 changed files with 21 additions and 12 deletions

View File

@ -51,18 +51,25 @@ export class UtilRegistry {
} }
initAll(scope) { initAll(scope) {
let startedInstances = [];
const setupInstances = this._registeredUtils.map((util) => this.setup(util, scope)).flat(); const setupInstances = this._registeredUtils.map((util) => this.setup(util, scope)).flat();
setupInstances setupInstances.forEach((utilInstance) => {
.filter((instance) => instance && typeof instance.start === 'function') if (utilInstance) {
.forEach((instance) => instance.start()); const instance = utilInstance.instance;
if (instance && typeof instance.start === 'function') {
instance.start();
startedInstances.push(instance);
}
}
});
if (DEBUG_MODE > 1) { if (DEBUG_MODE > 1) {
console.info('initialized js util instances:'); console.info('initialized js util instances:');
console.table(setupInstances); console.table(setupInstances);
} }
return setupInstances; return startedInstances;
} }
setup(util, scope = document.body) { setup(util, scope = document.body) {
@ -91,13 +98,13 @@ export class UtilRegistry {
console.info('Got utility instance for utility "' + util.name + '"', { utilInstance }); 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); this._activeUtilInstances.push(...instances);
return instances.map((instance) => ({ scope: scope, util: util, ...instance })); return instances;
} }
find(name) { find(name) {

View File

@ -97,8 +97,12 @@ describe('UtilRegistry', () => {
const setupUtilities = utilRegistry.setup(TestUtil1, testScope); const setupUtilities = utilRegistry.setup(TestUtil1, testScope);
expect(setupUtilities).toBeTruthy(); expect(setupUtilities).toBeTruthy();
expect(setupUtilities[0].app).toBe(fakeApp); setupUtilities.forEach((setupUtility) => {
expect(setupUtilities[1].app).toBe(fakeApp); 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); const initializedInstances = utilRegistry.initAll(testScope);
expect(initializedInstances.length).toBe(2); 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', () => { it('should not start instances that do not provide a start function', () => {
utilRegistry.register(TestUtil1); utilRegistry.register(TestUtil1);
utilRegistry.register(TestUtil2); utilRegistry.register(TestUtil2);
const initializedInstances = utilRegistry.initAll(testScope); const startedInstances = utilRegistry.initAll(testScope);
expect(initializedInstances.length).toBe(2); expect(startedInstances.length).toBe(0);
expect(initializedInstances.map((instance) => instance.util)).toEqual([TestUtil1,TestUtil2]);
}); });
}); });
}); });