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) {
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) {

View File

@ -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);
});
});
});