15
15
*/
16
16
var logging = require ( '@optimizely/js-sdk-logging' ) ;
17
17
var configValidator = require ( './utils/config_validator' ) ;
18
+ var eventProcessor = require ( '@optimizely/js-sdk-event-processor' ) ;
18
19
var Optimizely = require ( './optimizely' ) ;
19
20
var optimizelyFactory = require ( './index.browser' ) ;
20
21
var packageJSON = require ( '../package.json' ) ;
@@ -25,6 +26,8 @@ var assert = chai.assert;
25
26
var find = require ( 'lodash/find' ) ;
26
27
var sinon = require ( 'sinon' ) ;
27
28
29
+ var LocalStoragePendingEventsDispatcher = eventProcessor . LocalStoragePendingEventsDispatcher ;
30
+
28
31
describe ( 'javascript-sdk' , function ( ) {
29
32
describe ( 'APIs' , function ( ) {
30
33
var xhr ;
@@ -40,8 +43,8 @@ describe('javascript-sdk', function() {
40
43
} ) ;
41
44
42
45
describe ( 'createInstance' , function ( ) {
43
- var fakeErrorHandler = { handleError : function ( ) { } } ;
44
- var fakeEventDispatcher = { dispatchEvent : function ( ) { } } ;
46
+ var fakeErrorHandler = { handleError : function ( ) { } } ;
47
+ var fakeEventDispatcher = { dispatchEvent : function ( ) { } } ;
45
48
var silentLogger ;
46
49
47
50
beforeEach ( function ( ) {
@@ -55,17 +58,41 @@ describe('javascript-sdk', function() {
55
58
xhr = sinon . useFakeXMLHttpRequest ( ) ;
56
59
global . XMLHttpRequest = xhr ;
57
60
requests = [ ] ;
58
- xhr . onCreate = function ( req ) {
59
- requests . push ( req ) ;
61
+ xhr . onCreate = function ( req ) {
62
+ requests . push ( req ) ;
60
63
} ;
64
+
65
+ sinon . spy ( LocalStoragePendingEventsDispatcher . prototype , 'sendPendingEvents' ) ;
61
66
} ) ;
62
67
63
68
afterEach ( function ( ) {
69
+ LocalStoragePendingEventsDispatcher . prototype . sendPendingEvents . restore ( ) ;
70
+ optimizelyFactory . __internalResetRetryState ( ) ;
64
71
console . error . restore ( ) ;
65
72
configValidator . validate . restore ( ) ;
66
73
xhr . restore ( ) ;
67
74
} ) ;
68
75
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
+
69
96
it ( 'should not throw if the provided config is not valid' , function ( ) {
70
97
configValidator . validate . throws ( new Error ( 'Invalid config or something' ) ) ;
71
98
assert . doesNotThrow ( function ( ) {
@@ -157,10 +184,13 @@ describe('javascript-sdk', function() {
157
184
var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
158
185
assert . strictEqual ( didSetVariation , true ) ;
159
186
160
- var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'controlLaunched' ) ;
187
+ var didSetVariation2 = optlyInstance . setForcedVariation (
188
+ 'testExperimentLaunched' ,
189
+ 'testUser' ,
190
+ 'controlLaunched'
191
+ ) ;
161
192
assert . strictEqual ( didSetVariation2 , true ) ;
162
193
163
-
164
194
var variation = optlyInstance . getForcedVariation ( 'testExperiment' , 'testUser' ) ;
165
195
assert . strictEqual ( variation , 'control' ) ;
166
196
@@ -179,7 +209,11 @@ describe('javascript-sdk', function() {
179
209
var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
180
210
assert . strictEqual ( didSetVariation , true ) ;
181
211
182
- var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'controlLaunched' ) ;
212
+ var didSetVariation2 = optlyInstance . setForcedVariation (
213
+ 'testExperimentLaunched' ,
214
+ 'testUser' ,
215
+ 'controlLaunched'
216
+ ) ;
183
217
assert . strictEqual ( didSetVariation2 , true ) ;
184
218
185
219
var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , null ) ;
@@ -203,10 +237,18 @@ describe('javascript-sdk', function() {
203
237
var didSetVariation = optlyInstance . setForcedVariation ( 'testExperiment' , 'testUser' , 'control' ) ;
204
238
assert . strictEqual ( didSetVariation , true ) ;
205
239
206
- var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'controlLaunched' ) ;
240
+ var didSetVariation2 = optlyInstance . setForcedVariation (
241
+ 'testExperimentLaunched' ,
242
+ 'testUser' ,
243
+ 'controlLaunched'
244
+ ) ;
207
245
assert . strictEqual ( didSetVariation2 , true ) ;
208
246
209
- var didSetVariation2 = optlyInstance . setForcedVariation ( 'testExperimentLaunched' , 'testUser' , 'variationLaunched' ) ;
247
+ var didSetVariation2 = optlyInstance . setForcedVariation (
248
+ 'testExperimentLaunched' ,
249
+ 'testUser' ,
250
+ 'variationLaunched'
251
+ ) ;
210
252
assert . strictEqual ( didSetVariation2 , true ) ;
211
253
212
254
var variation = optlyInstance . getForcedVariation ( 'testExperiment' , 'testUser' ) ;
@@ -245,7 +287,11 @@ describe('javascript-sdk', function() {
245
287
logger : silentLogger ,
246
288
} ) ;
247
289
248
- var didSetVariation = optlyInstance . setForcedVariation ( 'testExperimentNotRunning' , 'testUser' , 'controlNotRunning' ) ;
290
+ var didSetVariation = optlyInstance . setForcedVariation (
291
+ 'testExperimentNotRunning' ,
292
+ 'testUser' ,
293
+ 'controlNotRunning'
294
+ ) ;
249
295
assert . strictEqual ( didSetVariation , true ) ;
250
296
251
297
var variation = optlyInstance . getVariation ( 'testExperimentNotRunning' , 'testUser' ) ;
0 commit comments