Skip to content

Commit 903ca5d

Browse files
committed
fire config update events synchronously
1 parent 299e1d7 commit 903ca5d

File tree

2 files changed

+17
-22
lines changed

2 files changed

+17
-22
lines changed

lib/project_config/project_config_manager.spec.ts

+16-18
Original file line numberDiff line numberDiff line change
@@ -121,24 +121,17 @@ describe('ProjectConfigManagerImpl', () => {
121121
expect(manager.getState()).toBe(ServiceState.Running);
122122
});
123123

124-
it('should call onUpdate listeners registered before or after start() with the project config after resolving onRunning()', async () => {
124+
it('should call onUpdate listeners registered before start() with the project config', async () => {
125125
const logger = getMockLogger();
126126
const manager = new ProjectConfigManagerImpl({ logger, datafile: testData.getTestProjectConfig()});
127-
const listener1 = vi.fn();
128-
manager.onUpdate(listener1);
127+
const listener = vi.fn();
128+
manager.onUpdate(listener);
129129
manager.start();
130-
const listener2 = vi.fn();
131-
manager.onUpdate(listener2);
132-
expect(listener1).not.toHaveBeenCalled();
133-
expect(listener2).not.toHaveBeenCalledOnce();
134130

135131
await manager.onRunning();
136132

137-
expect(listener1).toHaveBeenCalledOnce();
138-
expect(listener2).toHaveBeenCalledOnce();
139-
140-
expect(listener1).toHaveBeenCalledWith(createProjectConfig(testData.getTestProjectConfig()));
141-
expect(listener2).toHaveBeenCalledWith(createProjectConfig(testData.getTestProjectConfig()));
133+
expect(listener).toHaveBeenCalledOnce();
134+
expect(listener).toHaveBeenCalledWith(createProjectConfig(testData.getTestProjectConfig()));
142135
});
143136

144137
it('should return the correct config from getConfig() both before or after onRunning() resolves', async () => {
@@ -187,8 +180,8 @@ describe('ProjectConfigManagerImpl', () => {
187180
const listener = vi.fn();
188181

189182
const manager = new ProjectConfigManagerImpl({ datafile: testData.getTestProjectConfig(), datafileManager });
190-
manager.start();
191183
manager.onUpdate(listener);
184+
manager.start();
192185
await expect(manager.onRunning()).resolves.not.toThrow();
193186
expect(listener).toHaveBeenCalledWith(createProjectConfig(testData.getTestProjectConfig()));
194187
});
@@ -309,11 +302,12 @@ describe('ProjectConfigManagerImpl', () => {
309302

310303
const datafile = testData.getTestProjectConfig();
311304
const manager = new ProjectConfigManagerImpl({ datafile, datafileManager });
312-
manager.start();
313305

314306
const listener = vi.fn();
315307
manager.onUpdate(listener);
316308

309+
manager.start();
310+
317311
expect(manager.getConfig()).toEqual(createProjectConfig(datafile));
318312
await manager.onRunning();
319313
expect(manager.getConfig()).toEqual(createProjectConfig(datafile));
@@ -334,11 +328,12 @@ describe('ProjectConfigManagerImpl', () => {
334328
const logger = getMockLogger();
335329
const datafile = testData.getTestProjectConfig();
336330
const manager = new ProjectConfigManagerImpl({ logger, datafile, datafileManager });
337-
manager.start();
338331

339332
const listener = vi.fn();
340333
manager.onUpdate(listener);
341334

335+
manager.start();
336+
342337
expect(manager.getConfig()).toEqual(createProjectConfig(testData.getTestProjectConfig()));
343338
await manager.onRunning();
344339
expect(manager.getConfig()).toEqual(createProjectConfig(testData.getTestProjectConfig()));
@@ -379,11 +374,12 @@ describe('ProjectConfigManagerImpl', () => {
379374

380375
const datafile = testData.getTestProjectConfig();
381376
const manager = new ProjectConfigManagerImpl({ datafile, datafileManager });
382-
manager.start();
383377

384378
const listener = vi.fn();
385379
manager.onUpdate(listener);
386380

381+
manager.start();
382+
387383
expect(manager.getConfig()).toEqual(createProjectConfig(datafile));
388384
await manager.onRunning();
389385
expect(manager.getConfig()).toEqual(createProjectConfig(datafile));
@@ -401,11 +397,12 @@ describe('ProjectConfigManagerImpl', () => {
401397
const datafileManager = getMockDatafileManager({});
402398

403399
const manager = new ProjectConfigManagerImpl({ datafile });
404-
manager.start();
405400

406401
const listener = vi.fn();
407402
const dispose = manager.onUpdate(listener);
408403

404+
manager.start();
405+
409406
await manager.onRunning();
410407
expect(listener).toHaveBeenNthCalledWith(1, createProjectConfig(datafile));
411408

@@ -420,11 +417,12 @@ describe('ProjectConfigManagerImpl', () => {
420417
const datafile = testData.getTestProjectConfig();
421418

422419
const manager = new ProjectConfigManagerImpl({ datafile: JSON.stringify(datafile) });
423-
manager.start();
424420

425421
const listener = vi.fn();
426422
manager.onUpdate(listener);
427423

424+
manager.start();
425+
428426
await manager.onRunning();
429427
expect(listener).toHaveBeenCalledWith(createProjectConfig(datafile));
430428
expect(manager.getConfig()).toEqual(createProjectConfig(datafile));

lib/project_config/project_config_manager.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { createOptimizelyConfig } from './optimizely_config';
1818
import { OptimizelyConfig } from '../shared_types';
1919
import { DatafileManager } from './datafile_manager';
2020
import { ProjectConfig, toDatafile, tryCreatingProjectConfig } from './project_config';
21-
import { scheduleMicrotask } from '../utils/microtask';
2221
import { Service, ServiceState, BaseService } from '../service';
2322
import { Consumer, Fn, Transformer } from '../utils/type';
2423
import { EventEmitter } from '../utils/event_emitter/event_emitter';
@@ -166,9 +165,7 @@ export class ProjectConfigManagerImpl extends BaseService implements ProjectConf
166165
if (this.projectConfig?.revision !== config.revision) {
167166
this.projectConfig = config;
168167
this.optimizelyConfig = undefined;
169-
scheduleMicrotask(() => {
170-
this.eventEmitter.emit('update', config);
171-
})
168+
this.eventEmitter.emit('update', config);
172169
}
173170
} catch (err) {
174171
this.logger?.error(err);

0 commit comments

Comments
 (0)