Skip to content

Commit 2254f1e

Browse files
wip: android-sdk instrumental test done
1 parent db50aff commit 2254f1e

File tree

2 files changed

+107
-66
lines changed

2 files changed

+107
-66
lines changed

android-sdk/build.gradle

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,6 @@ android {
3434
}
3535
testOptions {
3636
unitTests.returnDefaultValues = true
37-
unitTests.all {
38-
jvmArgs '--add-opens', 'java.base/java.lang=ALL-UNNAMED'
39-
jvmArgs '--add-opens=java.base/java.util.zip=ALL-UNNAMED'
40-
jvmArgs '--add-opens=java.base/java.io=ALL-UNNAMED'
41-
}
4237
}
4338
buildTypes {
4439
release {
@@ -55,6 +50,12 @@ android {
5550
}
5651
}
5752

53+
subprojects {
54+
tasks.withType(Test).configureEach{
55+
jvmArgs = jvmArgs + ['--add-opens=java.base/java.lang=ALL-UNNAMED', '--add-open=java.base/java.util=ALL-UNNAMED', '--add-opens=java.base/java.lang.reflect=ALL-UNNAMED' ]
56+
}
57+
}
58+
5859
dependencies {
5960
api project(':shared')
6061
api project(':datafile-handler')
@@ -70,8 +71,8 @@ dependencies {
7071

7172
testImplementation "junit:junit:$junit_ver"
7273
testImplementation "org.mockito:mockito-core:$mockito_ver"
73-
// testImplementation "org.powermock:powermock-module-junit4:$powermock_ver"
74-
// testImplementation "org.powermock:powermock-api-mockito2:$powermock_ver"
74+
testImplementation "org.powermock:powermock-module-junit4:$powermock_ver"
75+
testImplementation "org.powermock:powermock-api-mockito2:$powermock_ver"
7576
testImplementation "com.noveogroup.android:android-logger:$android_logger_ver"
7677

7778
androidTestImplementation "androidx.work:work-testing:$work_runtime"

android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyManagerTest.java

Lines changed: 99 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,7 @@
6464
import static org.junit.Assert.assertNotEquals;
6565
import static org.mockito.ArgumentMatchers.any;
6666
import static org.mockito.ArgumentMatchers.eq;
67-
import static org.mockito.Mockito.doAnswer;
68-
import static org.mockito.Mockito.mock;
69-
import static org.mockito.Mockito.spy;
70-
import static org.mockito.Mockito.verify;
71-
import static org.mockito.Mockito.when;
67+
import static org.mockito.Mockito.*;
7268

7369
/**
7470
* Tests for {@link OptimizelyManager}
@@ -500,14 +496,20 @@ public void initializeSyncWithUpdateOnNewDatafileDisabled() {
500496
OptimizelyManager manager = new OptimizelyManager(testProjectId, testSdkKey, null, logger, pollingInterval, datafileHandler, null, 0,
501497
null, null, null, null, null, null, null, null, null);
502498

503-
doAnswer(
504-
new Answer<Object>() {
505-
public Object answer(InvocationOnMock invocation) {
506-
String newDatafile = manager.getDatafile(context, R.raw.datafile_api);
507-
datafileHandler.saveDatafile(context, manager.getDatafileConfig(), newDatafile);
508-
return null;
509-
}
510-
}).when(manager.getDatafileHandler()).downloadDatafile(any(Context.class), any(DatafileConfig.class), any(DatafileLoadedListener.class));
499+
ArgumentCaptor<Context> contextCaptor = ArgumentCaptor.forClass(Context.class);
500+
ArgumentCaptor<DatafileConfig> configCaptor = ArgumentCaptor.forClass(DatafileConfig.class);
501+
ArgumentCaptor<DatafileLoadedListener> listenerCaptor = ArgumentCaptor.forClass(DatafileLoadedListener.class);
502+
503+
doAnswer(invocation -> {
504+
Context capturedContext = contextCaptor.getValue();
505+
DatafileConfig capturedConfig = configCaptor.getValue();
506+
DatafileLoadedListener capturedListener = listenerCaptor.getValue();
507+
508+
String newDatafile = manager.getDatafile(capturedContext, R.raw.datafile_api);
509+
datafileHandler.saveDatafile(capturedContext, capturedConfig, newDatafile);
510+
511+
return datafileHandler;
512+
}).when(manager.getDatafileHandler()).downloadDatafile(contextCaptor.capture(), configCaptor.capture(), listenerCaptor.capture());
511513

512514
OptimizelyClient client = manager.initialize(context, defaultDatafile, downloadToCache, updateConfigOnNewDatafile);
513515

@@ -533,14 +535,20 @@ public void initializeSyncWithUpdateOnNewDatafileEnabled() {
533535
OptimizelyManager manager = new OptimizelyManager(testProjectId, testSdkKey, null, logger, pollingInterval, datafileHandler, null, 0,
534536
null, null, null, null, null, null, null, null, null);
535537

536-
doAnswer(
537-
new Answer<Object>() {
538-
public Object answer(InvocationOnMock invocation) {
539-
String newDatafile = manager.getDatafile(context, R.raw.datafile_api);
540-
datafileHandler.saveDatafile(context, manager.getDatafileConfig(), newDatafile);
541-
return null;
542-
}
543-
}).when(manager.getDatafileHandler()).downloadDatafile(any(Context.class), any(DatafileConfig.class), any(DatafileLoadedListener.class));
538+
ArgumentCaptor<Context> contextCaptor = ArgumentCaptor.forClass(Context.class);
539+
ArgumentCaptor<DatafileConfig> configCaptor = ArgumentCaptor.forClass(DatafileConfig.class);
540+
ArgumentCaptor<DatafileLoadedListener> listenerCaptor = ArgumentCaptor.forClass(DatafileLoadedListener.class);
541+
542+
doAnswer(invocation -> {
543+
Context capturedContext = contextCaptor.getValue();
544+
DatafileConfig capturedConfig = configCaptor.getValue();
545+
DatafileLoadedListener capturedListener = listenerCaptor.getValue();
546+
547+
String newDatafile = manager.getDatafile(capturedContext, R.raw.datafile_api);
548+
datafileHandler.saveDatafile(capturedContext, capturedConfig, newDatafile);
549+
550+
return datafileHandler;
551+
}).when(manager.getDatafileHandler()).downloadDatafile(contextCaptor.capture(), configCaptor.capture(), listenerCaptor.capture());
544552

545553
OptimizelyClient client = manager.initialize(context, defaultDatafile, downloadToCache, updateConfigOnNewDatafile);
546554

@@ -566,14 +574,20 @@ public void initializeSyncWithDownloadToCacheDisabled() {
566574
OptimizelyManager manager = new OptimizelyManager(testProjectId, testSdkKey, null, logger, pollingInterval, datafileHandler, null, 0,
567575
null, null, null, null, null, null, null, null, null);
568576

569-
doAnswer(
570-
new Answer<Object>() {
571-
public Object answer(InvocationOnMock invocation) {
572-
String newDatafile = manager.getDatafile(context, R.raw.datafile_api);
573-
datafileHandler.saveDatafile(context, manager.getDatafileConfig(), newDatafile);
574-
return null;
575-
}
576-
}).when(manager.getDatafileHandler()).downloadDatafile(any(Context.class), any(DatafileConfig.class), any(DatafileLoadedListener.class));
577+
ArgumentCaptor<Context> contextCaptor = ArgumentCaptor.forClass(Context.class);
578+
ArgumentCaptor<DatafileConfig> configCaptor = ArgumentCaptor.forClass(DatafileConfig.class);
579+
ArgumentCaptor<DatafileLoadedListener> listenerCaptor = ArgumentCaptor.forClass(DatafileLoadedListener.class);
580+
581+
doAnswer(invocation -> {
582+
Context capturedContext = contextCaptor.getValue();
583+
DatafileConfig capturedConfig = configCaptor.getValue();
584+
DatafileLoadedListener capturedListener = listenerCaptor.getValue();
585+
586+
String newDatafile = manager.getDatafile(capturedContext, R.raw.datafile_api);
587+
datafileHandler.saveDatafile(capturedContext, capturedConfig, newDatafile);
588+
589+
return datafileHandler;
590+
}).when(manager.getDatafileHandler()).downloadDatafile(contextCaptor.capture(), configCaptor.capture(), listenerCaptor.capture());
577591

578592
OptimizelyClient client = manager.initialize(context, defaultDatafile, downloadToCache, updateConfigOnNewDatafile);
579593

@@ -599,12 +613,20 @@ public void initializeSyncWithUpdateOnNewDatafileDisabledWithPeriodicPollingEnab
599613
OptimizelyManager manager = new OptimizelyManager(testProjectId, testSdkKey, null, logger, pollingInterval, datafileHandler, null, 0,
600614
null, null, null, null, null, null, null, null, null);
601615

602-
doAnswer(
603-
(Answer<Object>) invocation -> {
604-
String newDatafile = manager.getDatafile(context, R.raw.datafile_api);
605-
datafileHandler.saveDatafile(context, manager.getDatafileConfig(), newDatafile);
606-
return null;
607-
}).when(manager.getDatafileHandler()).downloadDatafile(any(Context.class), any(DatafileConfig.class), any(DatafileLoadedListener.class));
616+
ArgumentCaptor<Context> contextCaptor = ArgumentCaptor.forClass(Context.class);
617+
ArgumentCaptor<DatafileConfig> configCaptor = ArgumentCaptor.forClass(DatafileConfig.class);
618+
ArgumentCaptor<DatafileLoadedListener> listenerCaptor = ArgumentCaptor.forClass(DatafileLoadedListener.class);
619+
620+
doAnswer(invocation -> {
621+
Context capturedContext = contextCaptor.getValue();
622+
DatafileConfig capturedConfig = configCaptor.getValue();
623+
DatafileLoadedListener capturedListener = listenerCaptor.getValue();
624+
625+
String newDatafile = manager.getDatafile(capturedContext, R.raw.datafile_api);
626+
datafileHandler.saveDatafile(capturedContext, capturedConfig, newDatafile);
627+
628+
return datafileHandler;
629+
}).when(manager.getDatafileHandler()).downloadDatafile(contextCaptor.capture(), configCaptor.capture(), listenerCaptor.capture());
608630

609631
OptimizelyClient client = manager.initialize(context, defaultDatafile, downloadToCache, updateConfigOnNewDatafile);
610632

@@ -631,14 +653,20 @@ public void initializeSyncWithUpdateOnNewDatafileEnabledWithPeriodicPollingEnabl
631653
OptimizelyManager manager = new OptimizelyManager(testProjectId, testSdkKey, null, logger, pollingInterval, datafileHandler, null, 0,
632654
null, null, null, null, null, null, null, null, null);
633655

634-
doAnswer(
635-
new Answer<Object>() {
636-
public Object answer(InvocationOnMock invocation) {
637-
String newDatafile = manager.getDatafile(context, R.raw.datafile_api);
638-
datafileHandler.saveDatafile(context, manager.getDatafileConfig(), newDatafile);
639-
return null;
640-
}
641-
}).when(manager.getDatafileHandler()).downloadDatafile(any(Context.class), any(DatafileConfig.class), any(DatafileLoadedListener.class));
656+
ArgumentCaptor<Context> contextCaptor = ArgumentCaptor.forClass(Context.class);
657+
ArgumentCaptor<DatafileConfig> configCaptor = ArgumentCaptor.forClass(DatafileConfig.class);
658+
ArgumentCaptor<DatafileLoadedListener> listenerCaptor = ArgumentCaptor.forClass(DatafileLoadedListener.class);
659+
660+
doAnswer(invocation -> {
661+
Context capturedContext = contextCaptor.getValue();
662+
DatafileConfig capturedConfig = configCaptor.getValue();
663+
DatafileLoadedListener capturedListener = listenerCaptor.getValue();
664+
665+
String newDatafile = manager.getDatafile(capturedContext, R.raw.datafile_api);
666+
datafileHandler.saveDatafile(capturedContext, capturedConfig, newDatafile);
667+
668+
return datafileHandler;
669+
}).when(manager.getDatafileHandler()).downloadDatafile(contextCaptor.capture(), configCaptor.capture(), listenerCaptor.capture());
642670

643671
OptimizelyClient client = manager.initialize(context, defaultDatafile, downloadToCache, updateConfigOnNewDatafile);
644672

@@ -664,15 +692,21 @@ public void initializeSyncWithUpdateOnNewDatafileDisabledWithPeriodicPollingDisa
664692
OptimizelyManager manager = new OptimizelyManager(testProjectId, testSdkKey, null, logger, pollingInterval, datafileHandler, null, 0,
665693
null, null, null, null, null, null, null, null, null);
666694

667-
doAnswer(
668-
new Answer<Object>() {
669-
public Object answer(InvocationOnMock invocation) {
670-
String newDatafile = manager.getDatafile(context, R.raw.datafile_api);
671-
datafileHandler.saveDatafile(context, manager.getDatafileConfig(), newDatafile);
672-
return null;
673-
}
674-
}).when(manager.getDatafileHandler()).downloadDatafile(any(Context.class), any(DatafileConfig.class), any(DatafileLoadedListener.class));
695+
ArgumentCaptor<Context> contextCaptor = ArgumentCaptor.forClass(Context.class);
696+
ArgumentCaptor<DatafileConfig> configCaptor = ArgumentCaptor.forClass(DatafileConfig.class);
697+
ArgumentCaptor<DatafileLoadedListener> listenerCaptor = ArgumentCaptor.forClass(DatafileLoadedListener.class);
698+
699+
doAnswer(invocation -> {
700+
Context capturedContext = contextCaptor.getValue();
701+
DatafileConfig capturedConfig = configCaptor.getValue();
702+
DatafileLoadedListener capturedListener = listenerCaptor.getValue();
675703

704+
String newDatafile = manager.getDatafile(capturedContext, R.raw.datafile_api);
705+
datafileHandler.saveDatafile(capturedContext, capturedConfig, newDatafile);
706+
707+
return datafileHandler;
708+
}).when(manager.getDatafileHandler()).downloadDatafile(contextCaptor.capture(), configCaptor.capture(), listenerCaptor.capture());
709+
676710
OptimizelyClient client = manager.initialize(context, defaultDatafile, downloadToCache, updateConfigOnNewDatafile);
677711

678712
try {
@@ -698,14 +732,20 @@ public void initializeSyncWithUpdateOnNewDatafileEnabledWithPeriodicPollingDisab
698732
OptimizelyManager manager = new OptimizelyManager(testProjectId, testSdkKey, null, logger, pollingInterval, datafileHandler, null, 0,
699733
null, null, null, null, null, null, null, null, null);
700734

701-
doAnswer(
702-
new Answer<Object>() {
703-
public Object answer(InvocationOnMock invocation) {
704-
String newDatafile = manager.getDatafile(context, R.raw.datafile_api);
705-
datafileHandler.saveDatafile(context, manager.getDatafileConfig(), newDatafile);
706-
return null;
707-
}
708-
}).when(manager.getDatafileHandler()).downloadDatafile(any(Context.class), any(DatafileConfig.class), any(DatafileLoadedListener.class));
735+
ArgumentCaptor<Context> contextCaptor = ArgumentCaptor.forClass(Context.class);
736+
ArgumentCaptor<DatafileConfig> configCaptor = ArgumentCaptor.forClass(DatafileConfig.class);
737+
ArgumentCaptor<DatafileLoadedListener> listenerCaptor = ArgumentCaptor.forClass(DatafileLoadedListener.class);
738+
739+
doAnswer(invocation -> {
740+
Context capturedContext = contextCaptor.getValue();
741+
DatafileConfig capturedConfig = configCaptor.getValue();
742+
DatafileLoadedListener capturedListener = listenerCaptor.getValue();
743+
744+
String newDatafile = manager.getDatafile(capturedContext, R.raw.datafile_api);
745+
datafileHandler.saveDatafile(capturedContext, capturedConfig, newDatafile);
746+
747+
return datafileHandler;
748+
}).when(manager.getDatafileHandler()).downloadDatafile(contextCaptor.capture(), configCaptor.capture(), listenerCaptor.capture());
709749

710750
OptimizelyClient client = manager.initialize(context, defaultDatafile, downloadToCache, updateConfigOnNewDatafile);
711751

0 commit comments

Comments
 (0)