Skip to content

Commit

Permalink
feat: add getAnonymousId() API support (#308)
Browse files Browse the repository at this point in the history
* feat: add getAnonymousId() API support

* chore: add test case for getAnonymousId API

Added instrumentation test case in the core module to this this feature.
  • Loading branch information
1abhishekpandey authored Sep 19, 2023
1 parent 12e09ca commit 3e1a67a
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 1 deletion.
3 changes: 2 additions & 1 deletion core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ android {
consumerProguardFiles 'proguard-consumer-rules.pro'
buildConfigField("String", "VERSION_NAME", "\"${VERSION_NAME}\"")
buildConfigField("String", "VERSION_CODE", "\"${VERSION_CODE}\"")
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildFeatures{
buildConfig true
Expand Down Expand Up @@ -73,8 +74,8 @@ dependencies {
testImplementation "org.powermock:powermock-api-mockito2:2.0.9"
testImplementation 'org.awaitility:awaitility:4.2.0'
androidTestImplementation ('androidx.test.ext:junit:1.1.5')
androidTestImplementation ('androidx.test.espresso:espresso-core:3.5.1')
compileOnly "androidx.work:work-runtime:2.7.1"

}

repositories {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package com.rudderstack.android.sdk.core;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;

import android.content.Context;

import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class RudderClientInstrumentationTest {
Context context;
RudderConfig config;
@Before
public void setUp() {
context = ApplicationProvider.getApplicationContext();
config = new RudderConfig.Builder()
.withDataPlaneUrl("DATA_PLANE_URL")
.build();
}
@Test
public void anonymousIdIsValidWhenNotSetExplicitly() {
RudderClient rudderClient = RudderClient.getInstance(context, "WRITE_KEY", config);

String anonymousId = rudderClient.getAnonymousId();

assertNotNull(anonymousId);
assertNotEquals(0, anonymousId.length());
}

@Test
public void anonymousIdIsValidWhenExplicitlySetAfterSDKInit() {
RudderClient rudderClient = RudderClient.getInstance(context, "WRITE_KEY", config);
String customAnonymousId = "CUSTOM_ANONYMOUS_ID";
RudderClient.putAnonymousId(customAnonymousId);

String anonymousId = rudderClient.getAnonymousId();

assertEquals(customAnonymousId, anonymousId);
}

@Test
public void anonymousIdIsValidWhenExplicitlySetBeforeSDKInit() {
String customAnonymousId = "CUSTOM_ANONYMOUS_ID";
RudderClient.putAnonymousId(customAnonymousId);
RudderClient rudderClient = RudderClient.getInstance(context, "WRITE_KEY", config);

String anonymousId = rudderClient.getAnonymousId();

assertEquals(customAnonymousId, anonymousId);
}

@Test
public void anonymousIdIsValidWhenChangedMultipleTimeAfterSDKInit() {
RudderClient rudderClient = RudderClient.getInstance(context, "WRITE_KEY", config);
String firstCustomAnonymousId = "FIRST_CUSTOM_ANONYMOUS_ID";
RudderClient.putAnonymousId(firstCustomAnonymousId);

String anonymousIdChangedFirstTime = rudderClient.getAnonymousId();

String secondCustomAnonymousId = "SECOND_CUSTOM_ANONYMOUS_ID";
RudderClient.putAnonymousId(secondCustomAnonymousId);

String anonymousIdChangedSecondTime = rudderClient.getAnonymousId();

assertEquals(firstCustomAnonymousId, anonymousIdChangedFirstTime);
assertEquals(secondCustomAnonymousId, anonymousIdChangedSecondTime);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,14 @@ public static void putAnonymousId(@NonNull String anonymousId) {
}
}

@Nullable
public String getAnonymousId() {
if (getOptOutStatus()) {
return null;
}
return RudderContext.getAnonymousId();
}

public static void putAuthToken(@NonNull String authToken) {
if (instance == null) {
RudderClient.authToken = authToken;
Expand Down

0 comments on commit 3e1a67a

Please sign in to comment.