Skip to content

Commit 35a3876

Browse files
committed
more tests
1 parent 1ee5ba6 commit 35a3876

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

android-sdk/src/test/java/com/optimizely/ab/android/sdk/OptimizelyManagerBuilderTest.java

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,4 +534,82 @@ public void testCmabServiceConfigurationValidation() throws Exception {
534534
assertNotNull("Manager should be created successfully", manager);
535535
}
536536

537+
@Test
538+
public void testCmabServiceDefaultConfigurationValidation() throws Exception {
539+
// Default configuration values
540+
int defaultCacheSize = 100;
541+
int defaultTimeoutSeconds = 30 * 60; // 30 minutes = 1800 seconds
542+
543+
// Create mocks for the CMAB service creation chain
544+
Object mockDefaultLRUCache = PowerMockito.mock(Class.forName("com.optimizely.ab.cache.DefaultLRUCache"));
545+
Object mockDefaultCmabClient = PowerMockito.mock(Class.forName("com.optimizely.ab.cmab.DefaultCmabClient"));
546+
Object mockCmabServiceOptions = PowerMockito.mock(Class.forName("com.optimizely.ab.cmab.CmabServiceOptions"));
547+
Object mockDefaultCmabService = PowerMockito.mock(Class.forName("com.optimizely.ab.cmab.DefaultCmabService"));
548+
549+
// Mock the construction chain with parameter validation
550+
whenNew(Class.forName("com.optimizely.ab.cache.DefaultLRUCache"))
551+
.thenReturn(mockDefaultLRUCache);
552+
553+
whenNew(Class.forName("com.optimizely.ab.cmab.DefaultCmabClient"))
554+
.thenReturn(mockDefaultCmabClient);
555+
556+
whenNew(Class.forName("com.optimizely.ab.cmab.CmabServiceOptions"))
557+
.thenReturn(mockCmabServiceOptions);
558+
559+
whenNew(Class.forName("com.optimizely.ab.cmab.DefaultCmabService"))
560+
.thenReturn(mockDefaultCmabService);
561+
562+
// Use PowerMock to verify OptimizelyManager constructor is called with CMAB service
563+
whenNew(OptimizelyManager.class).withAnyArguments().thenReturn(mock(OptimizelyManager.class));
564+
565+
// Build OptimizelyManager with NO CMAB configuration to test defaults
566+
OptimizelyManager manager = OptimizelyManager.builder(testProjectId)
567+
.build(mockContext);
568+
569+
verifyNew(Class.forName("com.optimizely.ab.cache.DefaultLRUCache"))
570+
.withArguments(eq(defaultCacheSize), eq(defaultTimeoutSeconds));
571+
572+
// Verify DefaultCmabClient is created with default parameters
573+
verifyNew(Class.forName("com.optimizely.ab.cmab.DefaultCmabClient"))
574+
.withNoArguments();
575+
576+
// Verify CmabServiceOptions is created with logger, cache, and default client
577+
verifyNew(Class.forName("com.optimizely.ab.cmab.CmabServiceOptions"))
578+
.withArguments(any(), eq(mockDefaultLRUCache), eq(mockDefaultCmabClient));
579+
580+
verifyNew(Class.forName("com.optimizely.ab.cmab.DefaultCmabService"))
581+
.withArguments(eq(mockCmabServiceOptions));
582+
583+
// Verify OptimizelyManager constructor was called with the mocked CMAB service
584+
verifyNew(OptimizelyManager.class).withArguments(
585+
any(), // projectId
586+
any(), // sdkKey
587+
any(), // datafileConfig
588+
any(), // logger
589+
anyLong(), // datafileDownloadInterval
590+
any(), // datafileHandler
591+
any(), // errorHandler
592+
anyLong(), // eventDispatchRetryInterval
593+
any(), // eventHandler
594+
any(), // eventProcessor
595+
any(), // userProfileService
596+
any(), // notificationCenter
597+
any(), // defaultDecideOptions
598+
any(), // odpManager
599+
eq(mockDefaultCmabService), // cmabService - Should be our mocked service
600+
any(), // vuid
601+
any(), // customSdkName
602+
any() // customSdkVersion
603+
);
604+
605+
// This test validates:
606+
// 1. DefaultLRUCache created with default cache size (100) and timeout (1800 seconds)
607+
// 2. DefaultCmabClient created with no arguments (using defaults)
608+
// 3. CmabServiceOptions created with logger, mocked cache, and default client
609+
// 4. DefaultCmabService created with the mocked service options
610+
// 5. OptimizelyManager constructor receives the exact mocked CMAB service
611+
// 6. All default parameters flow correctly through the creation chain
612+
assertNotNull("Manager should be created successfully", manager);
613+
}
614+
537615
}

0 commit comments

Comments
 (0)