1515 */
1616var logging = require ( '@optimizely/js-sdk-logging' ) ;
1717var configValidator = require ( './utils/config_validator' ) ;
18+ var eventProcessor = require ( '@optimizely/js-sdk-event-processor' ) ;
1819var Optimizely = require ( './optimizely' ) ;
1920var optimizelyFactory = require ( './index.browser' ) ;
2021var packageJSON = require ( '../package.json' ) ;
@@ -25,6 +26,8 @@ var assert = chai.assert;
2526var find = require ( 'lodash/find' ) ;
2627var sinon = require ( 'sinon' ) ;
2728
29+ var LocalStoragePendingEventsDispatcher = eventProcessor . LocalStoragePendingEventsDispatcher ;
30+
2831describe ( 'javascript-sdk' , function ( ) {
2932 describe ( 'APIs' , function ( ) {
3033 var xhr ;
@@ -40,8 +43,8 @@ describe('javascript-sdk', function() {
4043 } ) ;
4144
4245 describe ( 'createInstance' , function ( ) {
43- var fakeErrorHandler = { handleError : function ( ) { } } ;
44- var fakeEventDispatcher = { dispatchEvent : function ( ) { } } ;
46+ var fakeErrorHandler = { handleError : function ( ) { } } ;
47+ var fakeEventDispatcher = { dispatchEvent : function ( ) { } } ;
4548 var silentLogger ;
4649
4750 beforeEach ( function ( ) {
@@ -55,17 +58,41 @@ describe('javascript-sdk', function() {
5558 xhr = sinon . useFakeXMLHttpRequest ( ) ;
5659 global . XMLHttpRequest = xhr ;
5760 requests = [ ] ;
58- xhr . onCreate = function ( req ) {
59- requests . push ( req ) ;
61+ xhr . onCreate = function ( req ) {
62+ requests . push ( req ) ;
6063 } ;
64+
65+ sinon . spy ( LocalStoragePendingEventsDispatcher . prototype , 'sendPendingEvents' ) ;
6166 } ) ;
6267
6368 afterEach ( function ( ) {
69+ LocalStoragePendingEventsDispatcher . prototype . sendPendingEvents . restore ( ) ;
70+ optimizelyFactory . __internalResetRetryState ( ) ;
6471 console . error . restore ( ) ;
6572 configValidator . validate . restore ( ) ;
6673 xhr . restore ( ) ;
6774 } ) ;
6875
76+ it ( 'should invoke resendPendingEvents at most once' , function ( ) {
77+ optimizelyFactory . createInstance ( {
78+ datafile : { } ,
79+ errorHandler : fakeErrorHandler ,
80+ eventDispatcher : fakeEventDispatcher ,
81+ logger : silentLogger ,
82+ } ) ;
83+
84+ sinon . assert . calledOnce ( LocalStoragePendingEventsDispatcher . prototype . sendPendingEvents ) ;
85+
86+ optimizelyFactory . createInstance ( {
87+ datafile : { } ,
88+ errorHandler : fakeErrorHandler ,
89+ eventDispatcher : fakeEventDispatcher ,
90+ logger : silentLogger ,
91+ } ) ;
92+
93+ sinon . assert . calledOnce ( LocalStoragePendingEventsDispatcher . prototype . sendPendingEvents ) ;
94+ } ) ;
95+
6996 it ( 'should not throw if the provided config is not valid' , function ( ) {
7097 configValidator . validate . throws ( new Error ( 'Invalid config or something' ) ) ;
7198 assert . doesNotThrow ( function ( ) {
@@ -157,10 +184,13 @@ describe('javascript-sdk', function() {
157184 var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
158185 assert . strictEqual ( didSetVariation , true ) ;
159186
160- var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'controlLaunched' ) ;
187+ var didSetVariation2 = optlyInstance . setForcedVariation (
188+ 'testExperimentLaunched' ,
189+ 'testUser' ,
190+ 'controlLaunched'
191+ ) ;
161192 assert . strictEqual ( didSetVariation2 , true ) ;
162193
163-
164194 var variation = optlyInstance . getForcedVariation ( 'testExperiment' , 'testUser' ) ;
165195 assert . strictEqual ( variation , 'control' ) ;
166196
@@ -179,7 +209,11 @@ describe('javascript-sdk', function() {
179209 var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
180210 assert . strictEqual ( didSetVariation , true ) ;
181211
182- var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'controlLaunched' ) ;
212+ var didSetVariation2 = optlyInstance . setForcedVariation (
213+ 'testExperimentLaunched' ,
214+ 'testUser' ,
215+ 'controlLaunched'
216+ ) ;
183217 assert . strictEqual ( didSetVariation2 , true ) ;
184218
185219 var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , null ) ;
@@ -203,10 +237,18 @@ describe('javascript-sdk', function() {
203237 var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
204238 assert . strictEqual ( didSetVariation , true ) ;
205239
206- var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'controlLaunched' ) ;
240+ var didSetVariation2 = optlyInstance . setForcedVariation (
241+ 'testExperimentLaunched' ,
242+ 'testUser' ,
243+ 'controlLaunched'
244+ ) ;
207245 assert . strictEqual ( didSetVariation2 , true ) ;
208246
209- var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'variationLaunched' ) ;
247+ var didSetVariation2 = optlyInstance . setForcedVariation (
248+ 'testExperimentLaunched' ,
249+ 'testUser' ,
250+ 'variationLaunched'
251+ ) ;
210252 assert . strictEqual ( didSetVariation2 , true ) ;
211253
212254 var variation = optlyInstance . getForcedVariation ( 'testExperiment' , 'testUser' ) ;
@@ -245,7 +287,11 @@ describe('javascript-sdk', function() {
245287 logger : silentLogger ,
246288 } ) ;
247289
248- var didSetVariation = optlyInstance . setForcedVariation ( 'testExperimentNotRunning' , 'testUser' , 'controlNotRunning' ) ;
290+ var didSetVariation = optlyInstance . setForcedVariation (
291+ 'testExperimentNotRunning' ,
292+ 'testUser' ,
293+ 'controlNotRunning'
294+ ) ;
249295 assert . strictEqual ( didSetVariation , true ) ;
250296
251297 var variation = optlyInstance . getVariation ( 'testExperimentNotRunning' , 'testUser' ) ;
0 commit comments