Skip to content

Commit e1bdc8b

Browse files
[FSSDK-10882] test addition
1 parent 9667701 commit e1bdc8b

File tree

4 files changed

+32
-1
lines changed

4 files changed

+32
-1
lines changed

lib/index.node.tests.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import * as loggerPlugin from './plugins/logger';
2424
import optimizelyFactory from './index.node';
2525
import configValidator from './utils/config_validator';
2626
import { getMockProjectConfigManager } from './tests/mock/mock_project_config_manager';
27+
import { createProjectConfig } from './project_config/project_config';
2728

2829
describe('optimizelyFactory', function() {
2930
describe('APIs', function() {
@@ -88,6 +89,22 @@ describe('optimizelyFactory', function() {
8889
assert.equal(optlyInstance.clientVersion, '5.3.4');
8990
});
9091

92+
it('should create an instance of optimizely with ssr flag, project config must be available', () => {
93+
const optlyInstance = optimizelyFactory.createInstance({
94+
projectConfigManager: getMockProjectConfigManager({
95+
initConfig: createProjectConfig(testData.getTestProjectConfig()),
96+
}),
97+
errorHandler: fakeErrorHandler,
98+
eventDispatcher: fakeEventDispatcher,
99+
logger: fakeLogger,
100+
isSsr: true,
101+
});
102+
103+
assert.instanceOf(optlyInstance, Optimizely);
104+
assert.equal(optlyInstance.projectConfigManager.isSsr, true);
105+
assert.deepEqual(optlyInstance.getProjectConfig(), createProjectConfig(testData.getTestProjectConfig()));
106+
});
107+
91108
// TODO: user will create and inject an event processor
92109
// these tests will be refactored accordingly
93110
// describe('event processor configuration', function() {

lib/project_config/project_config_manager.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,17 @@ describe('ProjectConfigManagerImpl', () => {
165165
await manager.onRunning();
166166
expect(manager.getConfig()).toEqual(createProjectConfig(testData.getTestProjectConfig()));
167167
});
168+
169+
it('should not start datafileManager if isSsr is true and return correct config', () => {
170+
const datafileManager = getMockDatafileManager({});
171+
vi.spyOn(datafileManager, 'start');
172+
const manager = new ProjectConfigManagerImpl({ datafile: testData.getTestProjectConfig(), datafileManager });
173+
manager.setSsr(true);
174+
manager.start();
175+
176+
expect(manager.getConfig()).toEqual(createProjectConfig(testData.getTestProjectConfig()));
177+
expect(datafileManager.start).not.toHaveBeenCalled();
178+
});
168179
});
169180

170181
describe('when datafile is invalid', () => {

lib/shared_types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,7 @@ export interface ConfigLite {
426426
defaultDecideOptions?: OptimizelyDecideOption[];
427427
clientEngine?: string;
428428
clientVersion?: string;
429+
isSsr?: boolean;
429430
}
430431

431432
export type OptimizelyExperimentsMap = {

lib/tests/mock/mock_project_config_manager.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ export const getMockProjectConfigManager = (opt: MockOpt = {}): ProjectConfigMan
2828
return {
2929
config: opt.initConfig,
3030
start: () => {},
31-
setSsr: () => {},
31+
setSsr: function(isSsr?:boolean) {
32+
this.isSsr = isSsr;
33+
},
3234
onRunning: () => opt.onRunning || Promise.resolve(),
3335
stop: () => {},
3436
onTerminated: () => opt.onTerminated || Promise.resolve(),

0 commit comments

Comments
 (0)