|
29 | 29 | import android.support.test.runner.AndroidJUnit4;
|
30 | 30 |
|
31 | 31 | import com.optimizely.ab.android.datafile_handler.DatafileHandler;
|
| 32 | +import com.optimizely.ab.android.datafile_handler.DatafileLoadedListener; |
32 | 33 | import com.optimizely.ab.android.datafile_handler.DatafileService;
|
33 | 34 | import com.optimizely.ab.android.datafile_handler.DefaultDatafileHandler;
|
34 | 35 | import com.optimizely.ab.android.event_handler.DefaultEventHandler;
|
|
44 | 45 | import org.junit.Test;
|
45 | 46 | import org.junit.runner.RunWith;
|
46 | 47 | import org.mockito.ArgumentCaptor;
|
| 48 | +import org.mockito.invocation.InvocationOnMock; |
| 49 | +import org.mockito.stubbing.Answer; |
47 | 50 | import org.slf4j.Logger;
|
48 | 51 |
|
49 | 52 | import java.util.concurrent.TimeUnit;
|
|
56 | 59 | import static junit.framework.Assert.fail;
|
57 | 60 | import static org.mockito.Matchers.any;
|
58 | 61 | import static org.mockito.Matchers.eq;
|
| 62 | +import static org.mockito.Mockito.doAnswer; |
59 | 63 | import static org.mockito.Mockito.mock;
|
60 | 64 | import static org.mockito.Mockito.verify;
|
61 | 65 | import static org.mockito.Mockito.when;
|
@@ -112,6 +116,7 @@ public void initializeInt() {
|
112 | 116 |
|
113 | 117 | assertEquals(optimizelyManager.getDatafileUrl("1"), "https://cdn.optimizely.com/json/1.json" );
|
114 | 118 |
|
| 119 | + verify(optimizelyManager.getDatafileHandler()).startBackgroundUpdates(eq(InstrumentationRegistry.getTargetContext()), eq(testProjectId), eq(3600L)); |
115 | 120 | assertNotNull(optimizelyManager.getOptimizely());
|
116 | 121 | assertNotNull(optimizelyManager.getDatafileHandler());
|
117 | 122 |
|
@@ -174,14 +179,28 @@ public void initializeAsync() {
|
174 | 179 | * Scenario#1: when datafile is not Empty
|
175 | 180 | * Scenario#2: when datafile is Empty
|
176 | 181 | */
|
177 |
| - optimizelyManager.initialize(InstrumentationRegistry.getContext(), R.raw.datafile, new OptimizelyStartListener() { |
| 182 | + |
| 183 | + doAnswer( |
| 184 | + new Answer<Object>() { |
| 185 | + public Object answer(InvocationOnMock invocation) { |
| 186 | + ((DatafileLoadedListener) invocation.getArguments()[2]).onDatafileLoaded(null); |
| 187 | + return null; |
| 188 | + } |
| 189 | + }).when(optimizelyManager.getDatafileHandler()).downloadDatafile(any(Context.class), any(String.class), |
| 190 | + any(DatafileLoadedListener.class)); |
| 191 | + |
| 192 | + OptimizelyStartListener listener = new OptimizelyStartListener() { |
178 | 193 | @Override
|
179 | 194 | public void onStart(OptimizelyClient optimizely) {
|
180 | 195 | assertNotNull(optimizelyManager.getOptimizely());
|
181 | 196 | assertNotNull(optimizelyManager.getDatafileHandler());
|
182 | 197 | assertNull(optimizelyManager.getOptimizelyStartListener());
|
183 | 198 | }
|
184 |
| - }); |
| 199 | + }; |
| 200 | + optimizelyManager.initialize(InstrumentationRegistry.getContext(), R.raw.datafile, listener); |
| 201 | + |
| 202 | + verify(optimizelyManager.getDatafileHandler()).startBackgroundUpdates(any(Context.class), eq(testProjectId), eq(3600L)); |
| 203 | + |
185 | 204 |
|
186 | 205 | assertEquals(optimizelyManager.isDatafileCached(InstrumentationRegistry.getTargetContext()), false);
|
187 | 206 |
|
@@ -271,6 +290,28 @@ public void injectOptimizely() {
|
271 | 290 |
|
272 | 291 | verify(logger).info("Sending Optimizely instance to listener");
|
273 | 292 | verify(startListener).onStart(any(OptimizelyClient.class));
|
| 293 | + verify(optimizelyManager.getDatafileHandler()).startBackgroundUpdates(eq(context), eq(testProjectId), eq(3600L)); |
| 294 | + |
| 295 | + } |
| 296 | + |
| 297 | + @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB) |
| 298 | + @Test |
| 299 | + public void injectOptimizelyWithDatafileLisener() { |
| 300 | + Context context = mock(Context.class); |
| 301 | + UserProfileService userProfileService = mock(UserProfileService.class); |
| 302 | + OptimizelyStartListener startListener = mock(OptimizelyStartListener.class); |
| 303 | + |
| 304 | + optimizelyManager.setOptimizelyStartListener(startListener); |
| 305 | + optimizelyManager.injectOptimizely(context, userProfileService, minDatafile); |
| 306 | + try { |
| 307 | + executor.awaitTermination(5, TimeUnit.SECONDS); |
| 308 | + } catch (InterruptedException e) { |
| 309 | + fail("Timed out"); |
| 310 | + } |
| 311 | + |
| 312 | + verify(optimizelyManager.getDatafileHandler()).startBackgroundUpdates(eq(context), eq(testProjectId), eq(3600L)); |
| 313 | + verify(logger).info("Sending Optimizely instance to listener"); |
| 314 | + verify(startListener).onStart(any(OptimizelyClient.class)); |
274 | 315 | }
|
275 | 316 |
|
276 | 317 | @Test
|
|
0 commit comments