diff --git a/android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java b/android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java index e4f871da..5b24df6f 100644 --- a/android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java +++ b/android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java @@ -1043,7 +1043,7 @@ public OptimizelyManager build(Context context) { Map commonData = OptimizelyDefaultAttributes.buildODPCommonData(context, logger); // Pass common identifiers for android-sdk only to java-core sdk. All ODP events will include these identifiers. - Map commonIdentifiers = (vuid != null) ? Collections.singletonMap("vuid", vuid) : Collections.emptyMap(); + Map commonIdentifiers = (vuid != null) ? Collections.singletonMap("vuid", vuid) : Collections.emptyMap(); ODPApiManager odpApiManager = new DefaultODPApiManager( context, @@ -1058,11 +1058,8 @@ public OptimizelyManager build(Context context) { .withApiManager(odpApiManager) .withSegmentCacheSize(odpSegmentCacheSize) .withSegmentCacheTimeout(odpSegmentCacheTimeoutInSecs) - - // TODO: this will be fixed in a separate PR after java-sdk is extended for android-sdk support. - //.withExtraCommonData(commonData) - //.withExtraCommonIdentifiers(commonIdentifiers) - + .withUserCommonData(commonData) + .withUserCommonIdentifiers(commonIdentifiers) .build(); } diff --git a/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java b/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java index 3c8980a7..63eaf9c0 100644 --- a/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java +++ b/android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java @@ -44,6 +44,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; import org.mockito.runners.MockitoJUnitRunner; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; @@ -69,6 +70,7 @@ import static org.powermock.api.mockito.PowerMockito.whenNew; import java.sql.Time; +import java.util.Map; import java.util.concurrent.TimeUnit; @RunWith(PowerMockRunner.class) @@ -369,4 +371,33 @@ public void testBuildWithODP_customSegmentFetchTimeout() throws Exception { assertEquals(ODPEventClient.Companion.getCONNECTION_TIMEOUT(), 30*1000); } + @Test + public void testBuildWithODP_defaultCommonDataAndIdentifiers() throws Exception { + ODPEventManager mockEventManager = mock(ODPEventManager.class); + whenNew(ODPEventManager.class).withAnyArguments().thenReturn(mockEventManager); + whenNew(ODPSegmentManager.class).withAnyArguments().thenReturn(mock(ODPSegmentManager.class)); + whenNew(ODPManager.class).withAnyArguments().thenReturn(mock(ODPManager.class)); + + OptimizelyManager manager = OptimizelyManager.builder() + .withSDKKey(testSdkKey) + .withVuid("test-vuid") + .build(mockContext); + + ArgumentCaptor> captorData = ArgumentCaptor.forClass(Map.class); + ArgumentCaptor> captorIdentifiers = ArgumentCaptor.forClass(Map.class); + + verify(mockEventManager).setUserCommonData(captorData.capture()); + verify(mockEventManager).setUserCommonIdentifiers(captorIdentifiers.capture()); + + Map data = captorData.getValue(); + Map identifiers = captorIdentifiers.getValue(); + + // here we just validate if data is passed or not (all values are validated in other tests: OptimizelyDefaultAttributesTest) + assertEquals(data.get("os"), "Android"); + assertEquals(data.size(), 4); + + assertEquals(identifiers.get("vuid"), "test-vuid"); + assertEquals(identifiers.size(), 1); + } + } diff --git a/build.gradle b/build.gradle index 43117043..7cbb75fb 100644 --- a/build.gradle +++ b/build.gradle @@ -58,6 +58,11 @@ allprojects { // SNAPSHOT support maven {url "https://oss.sonatype.org/content/repositories/snapshots/" } } + + configurations.all { + // no cache for SNAPSHOT dependency + resolutionStrategy.cacheChangingModulesFor 0, 'seconds' + } } ext {