34
34
import com .optimizely .ab .android .datafile_handler .DefaultDatafileHandler ;
35
35
import com .optimizely .ab .android .event_handler .DefaultEventHandler ;
36
36
import com .optimizely .ab .android .sdk .test .R ;
37
+ import com .optimizely .ab .android .shared .DatafileConfig ;
37
38
import com .optimizely .ab .android .shared .ServiceScheduler ;
38
39
import com .optimizely .ab .android .user_profile .DefaultUserProfileService ;
39
40
import com .optimizely .ab .bucketing .UserProfileService ;
71
72
public class OptimizelyManagerTest {
72
73
73
74
private String testProjectId = "7595190003" ;
75
+ private String testSdkKey = "123-2232323-343423423-435345345" ;
74
76
private ListeningExecutorService executor ;
75
77
private Logger logger ;
76
78
private OptimizelyManager optimizelyManager ;
@@ -93,7 +95,7 @@ public void setup() {
93
95
executor = MoreExecutors .newDirectExecutorService ();
94
96
DatafileHandler datafileHandler = mock (DefaultDatafileHandler .class );
95
97
EventHandler eventHandler = mock (DefaultEventHandler .class );
96
- optimizelyManager = new OptimizelyManager (testProjectId , logger , 3600L , datafileHandler , null , 3600L ,
98
+ optimizelyManager = new OptimizelyManager (testProjectId , null , logger , 3600L , datafileHandler , null , 3600L ,
97
99
eventHandler , null );
98
100
}
99
101
@@ -114,15 +116,38 @@ public void initializeInt() {
114
116
115
117
assertEquals (optimizelyManager .isDatafileCached (InstrumentationRegistry .getTargetContext ()), false );
116
118
117
- assertEquals (optimizelyManager .getDatafileUrl ("1" ), "https://cdn.optimizely.com/json/1 .json" );
119
+ assertEquals (optimizelyManager .getDatafileUrl (), "https://cdn.optimizely.com/json/7595190003 .json" );
118
120
119
- verify (optimizelyManager .getDatafileHandler ()).startBackgroundUpdates (eq (InstrumentationRegistry .getTargetContext ()), eq (testProjectId ), eq (3600L ));
121
+ verify (optimizelyManager .getDatafileHandler ()).startBackgroundUpdates (eq (InstrumentationRegistry .getTargetContext ()), eq (new DatafileConfig ( testProjectId , null ) ), eq (3600L ));
120
122
assertNotNull (optimizelyManager .getOptimizely ());
121
123
assertNotNull (optimizelyManager .getDatafileHandler ());
122
124
123
125
}
124
126
@ Test
125
- public void initializeSync () {
127
+ public void initializeSyncWithoutEnvironment () {
128
+ /*
129
+ * Scenario#1: when datafile is not Empty
130
+ * Scenario#2: when datafile is Empty
131
+ */
132
+ optimizelyManager .initialize (InstrumentationRegistry .getTargetContext (), R .raw .datafile );
133
+
134
+ assertEquals (optimizelyManager .isDatafileCached (InstrumentationRegistry .getTargetContext ()), false );
135
+
136
+ assertEquals (optimizelyManager .getDatafileUrl (), "https://cdn.optimizely.com/json/7595190003.json" );
137
+
138
+ assertNotNull (optimizelyManager .getOptimizely ());
139
+ assertNotNull (optimizelyManager .getDatafileHandler ());
140
+
141
+ optimizelyManager .initialize (InstrumentationRegistry .getTargetContext (),(Integer ) null );
142
+ verify (logger ).error (eq ("Invalid datafile resource ID." ));
143
+ }
144
+ @ Test
145
+ public void initializeSyncWithEnvironment () {
146
+ Logger logger = mock (Logger .class );
147
+ DatafileHandler datafileHandler = mock (DefaultDatafileHandler .class );
148
+ EventHandler eventHandler = mock (DefaultEventHandler .class );
149
+ OptimizelyManager optimizelyManager = new OptimizelyManager (testProjectId , testSdkKey ,logger , 3600L , datafileHandler , null , 3600L ,
150
+ eventHandler , null );
126
151
/*
127
152
* Scenario#1: when datafile is not Empty
128
153
* Scenario#2: when datafile is Empty
@@ -131,7 +156,7 @@ public void initializeSync() {
131
156
132
157
assertEquals (optimizelyManager .isDatafileCached (InstrumentationRegistry .getTargetContext ()), false );
133
158
134
- assertEquals (optimizelyManager .getDatafileUrl ("1" ), "https://cdn.optimizely.com/json/1 .json" );
159
+ assertEquals (optimizelyManager .getDatafileUrl (), "https://cdn.optimizely.com/json/123-2232323-343423423-435345345 .json" );
135
160
136
161
assertNotNull (optimizelyManager .getOptimizely ());
137
162
assertNotNull (optimizelyManager .getDatafileHandler ());
@@ -169,12 +194,18 @@ public void getDatafile() {
169
194
*/
170
195
assertEquals (optimizelyManager .isDatafileCached (InstrumentationRegistry .getTargetContext ()), false );
171
196
String datafile = optimizelyManager .getDatafile (InstrumentationRegistry .getTargetContext (), R .raw .datafile );
172
- assertEquals (optimizelyManager .getDatafileUrl ("1" ), "https://cdn.optimizely.com/json/1 .json" );
197
+ assertEquals (optimizelyManager .getDatafileUrl (), String . format ( "https://cdn.optimizely.com/json/%s .json" , testProjectId ) );
173
198
assertNotNull (datafile );
174
199
assertNotNull (optimizelyManager .getDatafileHandler ());
175
200
}
176
201
@ Test
177
- public void initializeAsync () {
202
+ public void initializeAsyncWithEnvironment () {
203
+ Logger logger = mock (Logger .class );
204
+ DatafileHandler datafileHandler = mock (DefaultDatafileHandler .class );
205
+ EventHandler eventHandler = mock (DefaultEventHandler .class );
206
+ final OptimizelyManager optimizelyManager = new OptimizelyManager (testProjectId , testSdkKey ,logger , 3600L , datafileHandler , null , 3600L ,
207
+ eventHandler , null );
208
+
178
209
/*
179
210
* Scenario#1: when datafile is not Empty
180
211
* Scenario#2: when datafile is Empty
@@ -186,7 +217,7 @@ public Object answer(InvocationOnMock invocation) {
186
217
((DatafileLoadedListener ) invocation .getArguments ()[2 ]).onDatafileLoaded (null );
187
218
return null ;
188
219
}
189
- }).when (optimizelyManager .getDatafileHandler ()).downloadDatafile (any (Context .class ), any (String .class ),
220
+ }).when (optimizelyManager .getDatafileHandler ()).downloadDatafile (any (Context .class ), any (DatafileConfig .class ),
190
221
any (DatafileLoadedListener .class ));
191
222
192
223
OptimizelyStartListener listener = new OptimizelyStartListener () {
@@ -199,15 +230,38 @@ public void onStart(OptimizelyClient optimizely) {
199
230
};
200
231
optimizelyManager .initialize (InstrumentationRegistry .getContext (), R .raw .datafile , listener );
201
232
202
- verify (optimizelyManager .getDatafileHandler ()).startBackgroundUpdates (any (Context .class ), eq (testProjectId ), eq (3600L ));
233
+ verify (optimizelyManager .getDatafileHandler ()).startBackgroundUpdates (any (Context .class ), eq (new DatafileConfig (testProjectId , testSdkKey )), eq (3600L ));
234
+
235
+
236
+ assertEquals (optimizelyManager .isDatafileCached (InstrumentationRegistry .getTargetContext ()), false );
237
+
238
+ assertEquals (optimizelyManager .getDatafileUrl (), "https://cdn.optimizely.com/json/123-2232323-343423423-435345345.json" );
239
+
203
240
241
+ }
242
+
243
+ @ Test
244
+ public void initializeAsyncWithoutEnvironment () {
245
+ /*
246
+ * Scenario#1: when datafile is not Empty
247
+ * Scenario#2: when datafile is Empty
248
+ */
249
+ optimizelyManager .initialize (InstrumentationRegistry .getContext (), R .raw .datafile , new OptimizelyStartListener () {
250
+ @ Override
251
+ public void onStart (OptimizelyClient optimizely ) {
252
+ assertNotNull (optimizelyManager .getOptimizely ());
253
+ assertNotNull (optimizelyManager .getDatafileHandler ());
254
+ assertNull (optimizelyManager .getOptimizelyStartListener ());
255
+ }
256
+ });
204
257
205
258
assertEquals (optimizelyManager .isDatafileCached (InstrumentationRegistry .getTargetContext ()), false );
206
259
207
- assertEquals (optimizelyManager .getDatafileUrl ("1" ), "https://cdn.optimizely.com/json/1 .json" );
260
+ assertEquals (optimizelyManager .getDatafileUrl (), "https://cdn.optimizely.com/json/7595190003 .json" );
208
261
209
262
210
263
}
264
+
211
265
@ Test
212
266
public void initializeWithEmptyDatafile () {
213
267
Context context = mock (Context .class );
@@ -266,7 +320,7 @@ public void stop() {
266
320
Context appContext = mock (Context .class );
267
321
when (context .getApplicationContext ()).thenReturn (appContext );
268
322
269
- optimizelyManager .getDatafileHandler ().downloadDatafile (context , optimizelyManager .getProjectId (), null );
323
+ optimizelyManager .getDatafileHandler ().downloadDatafile (context , optimizelyManager .getDatafileConfig (), null );
270
324
271
325
optimizelyManager .stop (context );
272
326
@@ -290,7 +344,7 @@ public void injectOptimizely() {
290
344
291
345
verify (logger ).info ("Sending Optimizely instance to listener" );
292
346
verify (startListener ).onStart (any (OptimizelyClient .class ));
293
- verify (optimizelyManager .getDatafileHandler ()).startBackgroundUpdates (eq (context ), eq (testProjectId ), eq (3600L ));
347
+ verify (optimizelyManager .getDatafileHandler ()).startBackgroundUpdates (eq (context ), eq (new DatafileConfig ( testProjectId , null ) ), eq (3600L ));
294
348
295
349
}
296
350
@@ -309,7 +363,7 @@ public void injectOptimizelyWithDatafileLisener() {
309
363
fail ("Timed out" );
310
364
}
311
365
312
- verify (optimizelyManager .getDatafileHandler ()).startBackgroundUpdates (eq (context ), eq (testProjectId ), eq (3600L ));
366
+ verify (optimizelyManager .getDatafileHandler ()).startBackgroundUpdates (eq (context ), eq (new DatafileConfig ( testProjectId , null ) ), eq (3600L ));
313
367
verify (logger ).info ("Sending Optimizely instance to listener" );
314
368
verify (startListener ).onStart (any (OptimizelyClient .class ));
315
369
}
@@ -342,7 +396,7 @@ public void injectOptimizelyNullListener() {
342
396
.PendingIntentFactory (context );
343
397
344
398
Intent intent = new Intent (context , DatafileService .class );
345
- intent .putExtra (DatafileService .EXTRA_PROJECT_ID , optimizelyManager .getProjectId ());
399
+ intent .putExtra (DatafileService .EXTRA_DATAFILE_CONFIG , optimizelyManager .getDatafileConfig (). toJSONString ());
346
400
serviceScheduler .schedule (intent , optimizelyManager .getDatafileDownloadInterval () * 1000 );
347
401
348
402
try {
@@ -356,7 +410,7 @@ public void injectOptimizelyNullListener() {
356
410
357
411
Intent intent2 = captor .getValue ();
358
412
assertTrue (intent2 .getComponent ().getShortClassName ().contains ("DatafileService" ));
359
- assertEquals (optimizelyManager .getProjectId () , intent2 .getStringExtra (DatafileService .EXTRA_PROJECT_ID ));
413
+ assertEquals (optimizelyManager .getDatafileConfig (). toJSONString () , intent2 .getStringExtra (DatafileService .EXTRA_DATAFILE_CONFIG ));
360
414
}
361
415
362
416
@ RequiresApi (api = Build .VERSION_CODES .HONEYCOMB )
0 commit comments