Skip to content

Commit ee8e8cf

Browse files
committed
opti: part 1
1 parent d7c714b commit ee8e8cf

File tree

6 files changed

+182
-538
lines changed

6 files changed

+182
-538
lines changed

lib/index.browser.tests.js

Lines changed: 25 additions & 248 deletions
Original file line numberDiff line numberDiff line change
@@ -82,61 +82,35 @@ describe('javascript-sdk (Browser)', function() {
8282
});
8383

8484
describe('APIs', function() {
85-
it('should expose logger, errorHandler, eventDispatcher and enums', function() {
86-
assert.isDefined(optimizelyFactory.logging);
87-
assert.isDefined(optimizelyFactory.logging.createLogger);
88-
assert.isDefined(optimizelyFactory.logging.createNoOpLogger);
89-
assert.isDefined(optimizelyFactory.errorHandler);
90-
assert.isDefined(optimizelyFactory.eventDispatcher);
91-
assert.isDefined(optimizelyFactory.enums);
92-
});
85+
// it('should expose logger, errorHandler, eventDispatcher and enums', function() {
86+
// assert.isDefined(optimizelyFactory.logging);
87+
// assert.isDefined(optimizelyFactory.logging.createLogger);
88+
// assert.isDefined(optimizelyFactory.logging.createNoOpLogger);
89+
// assert.isDefined(optimizelyFactory.errorHandler);
90+
// assert.isDefined(optimizelyFactory.eventDispatcher);
91+
// assert.isDefined(optimizelyFactory.enums);
92+
// });
9393

9494
describe('createInstance', function() {
9595
var fakeErrorHandler = { handleError: function() {} };
9696
var fakeEventDispatcher = { dispatchEvent: function() {} };
97-
var silentLogger;
97+
var mockLogger;
9898

9999
beforeEach(function() {
100-
silentLogger = optimizelyFactory.logging.createLogger({
101-
logLevel: optimizelyFactory.enums.LOG_LEVEL.INFO,
102-
logToConsole: false,
103-
});
104-
sinon.spy(console, 'error');
105-
sinon.stub(configValidator, 'validate');
100+
mockLogger = getLogger();
101+
sinon.stub(mockLogger, 'error');
106102

103+
sinon.stub(configValidator, 'validate');
107104
global.XMLHttpRequest = sinon.useFakeXMLHttpRequest();
108105
});
109106

110107
afterEach(function() {
111108
optimizelyFactory.__internalResetRetryState();
112-
console.error.restore();
109+
mockLogger.error.restore();
113110
configValidator.validate.restore();
114111
delete global.XMLHttpRequest;
115112
});
116113

117-
// TODO: pending event handling will be done by EventProcessor instead
118-
// describe('when an eventDispatcher is not passed in', function() {
119-
// it('should wrap the default eventDispatcher and invoke sendPendingEvents', function() {
120-
// var optlyInstance = optimizelyFactory.createInstance({
121-
// projectConfigManager: getMockProjectConfigManager(),
122-
// errorHandler: fakeErrorHandler,
123-
// logger: silentLogger,
124-
// });
125-
126-
// sinon.assert.calledOnce(LocalStoragePendingEventsDispatcher.prototype.sendPendingEvents);
127-
// });
128-
// });
129-
130-
describe('when an eventDispatcher is passed in', function() {
131-
it('should NOT wrap the default eventDispatcher and invoke sendPendingEvents', function() {
132-
var optlyInstance = optimizelyFactory.createInstance({
133-
projectConfigManager: getMockProjectConfigManager(),
134-
errorHandler: fakeErrorHandler,
135-
eventDispatcher: fakeEventDispatcher,
136-
logger: silentLogger,
137-
});
138-
});
139-
});
140114

141115
// TODO: pending event handling should be part of the event processor
142116
// logic, not the dispatcher. Refactor accordingly.
@@ -164,7 +138,7 @@ describe('javascript-sdk (Browser)', function() {
164138
assert.doesNotThrow(function() {
165139
var optlyInstance = optimizelyFactory.createInstance({
166140
projectConfigManager: getMockProjectConfigManager(),
167-
logger: silentLogger,
141+
logger: mockLogger,
168142
});
169143
});
170144
});
@@ -174,7 +148,7 @@ describe('javascript-sdk (Browser)', function() {
174148
projectConfigManager: getMockProjectConfigManager(),
175149
errorHandler: fakeErrorHandler,
176150
eventDispatcher: fakeEventDispatcher,
177-
logger: silentLogger,
151+
logger: mockLogger,
178152
});
179153

180154
assert.instanceOf(optlyInstance, Optimizely);
@@ -186,7 +160,7 @@ describe('javascript-sdk (Browser)', function() {
186160
projectConfigManager: getMockProjectConfigManager(),
187161
errorHandler: fakeErrorHandler,
188162
eventDispatcher: fakeEventDispatcher,
189-
logger: silentLogger,
163+
logger: mockLogger,
190164
});
191165

192166
assert.equal('javascript-sdk', optlyInstance.clientEngine);
@@ -199,7 +173,7 @@ describe('javascript-sdk (Browser)', function() {
199173
projectConfigManager: getMockProjectConfigManager(),
200174
errorHandler: fakeErrorHandler,
201175
eventDispatcher: fakeEventDispatcher,
202-
logger: silentLogger,
176+
logger: mockLogger,
203177
});
204178
assert.equal('react-sdk', optlyInstance.clientEngine);
205179
});
@@ -211,7 +185,7 @@ describe('javascript-sdk (Browser)', function() {
211185
}),
212186
errorHandler: fakeErrorHandler,
213187
eventDispatcher: optimizelyFactory.eventDispatcher,
214-
logger: silentLogger,
188+
logger: mockLogger,
215189
});
216190
var activate = optlyInstance.activate('testExperiment', 'testUser');
217191
assert.strictEqual(activate, 'control');
@@ -224,7 +198,7 @@ describe('javascript-sdk (Browser)', function() {
224198
}),
225199
errorHandler: fakeErrorHandler,
226200
eventDispatcher: optimizelyFactory.eventDispatcher,
227-
logger: silentLogger,
201+
logger: mockLogger,
228202
});
229203

230204
var didSetVariation = optlyInstance.setForcedVariation('testExperiment', 'testUser', 'control');
@@ -241,7 +215,7 @@ describe('javascript-sdk (Browser)', function() {
241215
}),
242216
errorHandler: fakeErrorHandler,
243217
eventDispatcher: optimizelyFactory.eventDispatcher,
244-
logger: silentLogger,
218+
logger: mockLogger,
245219
});
246220

247221
var didSetVariation = optlyInstance.setForcedVariation('testExperiment', 'testUser', 'control');
@@ -264,7 +238,7 @@ describe('javascript-sdk (Browser)', function() {
264238
}),
265239
errorHandler: fakeErrorHandler,
266240
eventDispatcher: optimizelyFactory.eventDispatcher,
267-
logger: silentLogger,
241+
logger: mockLogger,
268242
});
269243

270244
var didSetVariation = optlyInstance.setForcedVariation('testExperiment', 'testUser', 'control');
@@ -291,7 +265,7 @@ describe('javascript-sdk (Browser)', function() {
291265
}),
292266
errorHandler: fakeErrorHandler,
293267
eventDispatcher: optimizelyFactory.eventDispatcher,
294-
logger: silentLogger,
268+
logger: mockLogger,
295269
});
296270

297271
var didSetVariation = optlyInstance.setForcedVariation('testExperiment', 'testUser', 'control');
@@ -321,7 +295,7 @@ describe('javascript-sdk (Browser)', function() {
321295
}),
322296
errorHandler: fakeErrorHandler,
323297
eventDispatcher: optimizelyFactory.eventDispatcher,
324-
logger: silentLogger,
298+
logger: mockLogger,
325299
});
326300

327301
var didSetVariation = optlyInstance.setForcedVariation('testExperiment', 'testUser', 'control');
@@ -355,7 +329,7 @@ describe('javascript-sdk (Browser)', function() {
355329
}),
356330
errorHandler: fakeErrorHandler,
357331
eventDispatcher: optimizelyFactory.eventDispatcher,
358-
logger: silentLogger,
332+
logger: mockLogger,
359333
});
360334

361335
var didSetVariation = optlyInstance.setForcedVariation('testExperiment', 'testUser', 'control');
@@ -378,7 +352,7 @@ describe('javascript-sdk (Browser)', function() {
378352
}),
379353
errorHandler: fakeErrorHandler,
380354
eventDispatcher: optimizelyFactory.eventDispatcher,
381-
logger: silentLogger,
355+
logger: mockLogger,
382356
});
383357

384358
var didSetVariation = optlyInstance.setForcedVariation(
@@ -391,203 +365,6 @@ describe('javascript-sdk (Browser)', function() {
391365
var variation = optlyInstance.getVariation('testExperimentNotRunning', 'testUser');
392366
assert.strictEqual(variation, null);
393367
});
394-
395-
describe('when passing in logLevel', function() {
396-
beforeEach(function() {
397-
sinon.stub(logging, 'setLogLevel');
398-
});
399-
400-
afterEach(function() {
401-
logging.setLogLevel.restore();
402-
});
403-
404-
it('should call logging.setLogLevel', function() {
405-
optimizelyFactory.createInstance({
406-
datafile: testData.getTestProjectConfig(),
407-
logLevel: optimizelyFactory.enums.LOG_LEVEL.ERROR,
408-
});
409-
sinon.assert.calledOnce(logging.setLogLevel);
410-
sinon.assert.calledWithExactly(logging.setLogLevel, optimizelyFactory.enums.LOG_LEVEL.ERROR);
411-
});
412-
});
413-
414-
describe('when passing in logger', function() {
415-
beforeEach(function() {
416-
sinon.stub(logging, 'setLogHandler');
417-
});
418-
419-
afterEach(function() {
420-
logging.setLogHandler.restore();
421-
});
422-
423-
it('should call logging.setLogHandler with the supplied logger', function() {
424-
var fakeLogger = { log: function() {} };
425-
optimizelyFactory.createInstance({
426-
datafile: testData.getTestProjectConfig(),
427-
logger: fakeLogger,
428-
});
429-
sinon.assert.calledOnce(logging.setLogHandler);
430-
sinon.assert.calledWithExactly(logging.setLogHandler, fakeLogger);
431-
});
432-
});
433-
});
434-
435-
describe('ODP/ATS', () => {
436-
var sandbox = sinon.sandbox.create();
437-
438-
const fakeOptimizely = {
439-
onReady: () => Promise.resolve({ success: true }),
440-
identifyUser: sinon.stub().returns(),
441-
};
442-
443-
const fakeErrorHandler = { handleError: function() {} };
444-
const fakeEventDispatcher = { dispatchEvent: function() {} };
445-
let logger = getLogger();
446-
447-
const testFsUserId = 'fs_test_user';
448-
const testVuid = 'vuid_test_user';
449-
var clock;
450-
const requestParams = new Map();
451-
const mockRequestHandler = {
452-
makeRequest: (endpoint, headers, method, data) => {
453-
requestParams.set('endpoint', endpoint);
454-
requestParams.set('headers', headers);
455-
requestParams.set('method', method);
456-
requestParams.set('data', data);
457-
return {
458-
responsePromise: (async () => {
459-
return { statusCode: 200 };
460-
})(),
461-
};
462-
},
463-
args: requestParams,
464-
};
465-
466-
beforeEach(function() {
467-
sandbox.stub(logger, 'log');
468-
sandbox.stub(logger, 'error');
469-
sandbox.stub(logger, 'warn');
470-
clock = sinon.useFakeTimers(new Date());
471-
});
472-
473-
afterEach(function() {
474-
sandbox.restore();
475-
clock.restore();
476-
requestParams.clear();
477-
});
478-
479-
480-
// TODO: these tests should be elsewhere
481-
// it('should send an odp event when calling sendOdpEvent with valid parameters', async () => {
482-
// const fakeEventManager = {
483-
// updateSettings: sinon.spy(),
484-
// start: sinon.spy(),
485-
// stop: sinon.spy(),
486-
// registerVuid: sinon.spy(),
487-
// identifyUser: sinon.spy(),
488-
// sendEvent: sinon.spy(),
489-
// flush: sinon.spy(),
490-
// };
491-
492-
// const config = createProjectConfig(testData.getOdpIntegratedConfigWithoutSegments());
493-
// const projectConfigManager = getMockProjectConfigManager({
494-
// initConfig: config,
495-
// onRunning: Promise.resolve(),
496-
// });
497-
498-
// const client = optimizelyFactory.createInstance({
499-
// projectConfigManager,
500-
// errorHandler: fakeErrorHandler,
501-
// eventDispatcher: fakeEventDispatcher,
502-
// eventBatchSize: null,
503-
// logger,
504-
// odpOptions: {
505-
// eventManager: fakeEventManager,
506-
// },
507-
// });
508-
509-
// projectConfigManager.pushUpdate(config);
510-
// await client.onReady();
511-
512-
// client.sendOdpEvent(ODP_EVENT_ACTION.INITIALIZED);
513-
514-
// sinon.assert.notCalled(logger.error);
515-
// sinon.assert.called(fakeEventManager.sendEvent);
516-
// });
517-
518-
519-
// it('should log an error when attempting to send an odp event when odp is disabled', async () => {
520-
// const config = createProjectConfig(testData.getTestProjectConfigWithFeatures());
521-
// const projectConfigManager = getMockProjectConfigManager({
522-
// initConfig: config,
523-
// onRunning: Promise.resolve(),
524-
// });
525-
526-
// const client = optimizelyFactory.createInstance({
527-
// projectConfigManager,
528-
// errorHandler: fakeErrorHandler,
529-
// eventDispatcher: fakeEventDispatcher,
530-
// eventBatchSize: null,
531-
// logger,
532-
// odpOptions: {
533-
// disabled: true,
534-
// },
535-
// });
536-
537-
// projectConfigManager.pushUpdate(config);
538-
539-
// await client.onReady();
540-
541-
// assert.isUndefined(client.odpManager);
542-
// sinon.assert.calledWith(logger.log, optimizelyFactory.enums.LOG_LEVEL.INFO, 'ODP Disabled.');
543-
544-
// client.sendOdpEvent(ODP_EVENT_ACTION.INITIALIZED);
545-
546-
// sinon.assert.calledWith(
547-
// logger.error,
548-
// optimizelyFactory.enums.ERROR_MESSAGES.ODP_EVENT_FAILED_ODP_MANAGER_MISSING
549-
// );
550-
// });
551-
552-
// it('should send odp client_initialized on client instantiation', async () => {
553-
// const odpConfig = new OdpConfig('key', 'host', 'pixel', []);
554-
// const apiManager = new BrowserOdpEventApiManager(mockRequestHandler, logger);
555-
// sinon.spy(apiManager, 'sendEvents');
556-
// const eventManager = new BrowserOdpEventManager({
557-
// odpConfig,
558-
// apiManager,
559-
// logger,
560-
// });
561-
// const datafile = testData.getOdpIntegratedConfigWithSegments();
562-
// const config = createProjectConfig(datafile);
563-
// const projectConfigManager = getMockProjectConfigManager({
564-
// initConfig: config,
565-
// onRunning: Promise.resolve(),
566-
// });
567-
568-
// const client = optimizelyFactory.createInstance({
569-
// projectConfigManager,
570-
// errorHandler: fakeErrorHandler,
571-
// eventDispatcher: fakeEventDispatcher,
572-
// eventBatchSize: null,
573-
// logger,
574-
// odpOptions: {
575-
// odpConfig,
576-
// eventManager,
577-
// },
578-
// });
579-
580-
// projectConfigManager.pushUpdate(config);
581-
// await client.onReady();
582-
583-
// clock.tick(100);
584-
585-
// const [_, events] = apiManager.sendEvents.getCall(0).args;
586-
587-
// const [firstEvent] = events;
588-
// assert.equal(firstEvent.action, 'client_initialized');
589-
// assert.equal(firstEvent.type, 'fullstack');
590-
// });
591368
});
592369
});
593370
});

0 commit comments

Comments
 (0)