1717package com .optimizely .ab .android .sdk ;
1818
1919import android .content .Context ;
20- import android .graphics .Path ;
2120
22- import com .optimizely .ab .Optimizely ;
2321import com .optimizely .ab .android .datafile_handler .DatafileHandler ;
2422import com .optimizely .ab .android .datafile_handler .DefaultDatafileHandler ;
2523import com .optimizely .ab .android .event_handler .DefaultEventHandler ;
2826import com .optimizely .ab .android .odp .ODPSegmentClient ;
2927import com .optimizely .ab .android .odp .VuidManager ;
3028import com .optimizely .ab .android .shared .DatafileConfig ;
31- import com .optimizely .ab .android .shared .WorkerScheduler ;
3229import com .optimizely .ab .android .user_profile .DefaultUserProfileService ;
3330import com .optimizely .ab .bucketing .UserProfileService ;
3431import com .optimizely .ab .error .ErrorHandler ;
3532import com .optimizely .ab .event .BatchEventProcessor ;
3633import com .optimizely .ab .event .EventHandler ;
3734import com .optimizely .ab .event .EventProcessor ;
3835import com .optimizely .ab .notification .NotificationCenter ;
39- import com .optimizely .ab .odp .ODPApiManager ;
4036import com .optimizely .ab .odp .ODPEventManager ;
4137import com .optimizely .ab .odp .ODPManager ;
4238import com .optimizely .ab .odp .ODPSegmentManager ;
4339
40+ import org .junit .After ;
4441import org .junit .Before ;
4542import org .junit .Test ;
4643import org .junit .runner .RunWith ;
4744import org .mockito .ArgumentCaptor ;
48- import org .mockito . runners . MockitoJUnitRunner ;
45+ import org .powermock . api . mockito . PowerMockito ;
4946import org .powermock .core .classloader .annotations .PowerMockIgnore ;
5047import org .powermock .core .classloader .annotations .PrepareForTest ;
5148import org .powermock .modules .junit4 .PowerMockRunner ;
49+ import org .powermock .reflect .Whitebox ;
5250import org .slf4j .Logger ;
5351
5452import static junit .framework .Assert .assertEquals ;
53+ import static org .junit .Assert .assertFalse ;
5554import static org .junit .Assert .assertNotNull ;
5655import static org .junit .Assert .assertNull ;
5756import static org .mockito .ArgumentMatchers .anyLong ;
6362import static org .mockito .Mockito .mock ;
6463import static org .mockito .Mockito .never ;
6564import static org .mockito .Mockito .spy ;
65+ import static org .mockito .Mockito .times ;
6666import static org .mockito .Mockito .verify ;
6767import static org .mockito .Mockito .when ;
6868import static org .powermock .api .mockito .PowerMockito .mockStatic ;
6969import static org .powermock .api .mockito .PowerMockito .verifyNew ;
7070import static org .powermock .api .mockito .PowerMockito .whenNew ;
7171
72- import java .sql .Time ;
7372import java .util .Map ;
7473import java .util .concurrent .TimeUnit ;
7574
7675@ RunWith (PowerMockRunner .class )
7776@ PowerMockIgnore ("jdk.internal.reflect.*" )
78- @ PrepareForTest ({OptimizelyManager .class , BatchEventProcessor .class , DefaultEventHandler .class , ODPManager .class , ODPSegmentManager .class , ODPEventManager .class })
77+ @ PrepareForTest ({OptimizelyManager .class , BatchEventProcessor .class , DefaultEventHandler .class , ODPManager .class , ODPSegmentManager .class , ODPEventManager .class , VuidManager . class })
7978public class OptimizelyManagerBuilderTest {
8079
8180 private String testProjectId = "7595190003" ;
8281 private String testSdkKey = "1234" ;
8382 private Logger logger ;
8483
84+ private VuidManager mockVuidManager ;
85+
8586 private String minDatafile = "{\n " +
8687 "experiments: [ ],\n " +
8788 "version: \" 2\" ,\n " +
@@ -101,6 +102,19 @@ public class OptimizelyManagerBuilderTest {
101102 public void setup () throws Exception {
102103 mockContext = mock (Context .class );
103104 mockDatafileHandler = mock (DefaultDatafileHandler .class );
105+
106+ mockStatic (VuidManager .class );
107+ VuidManager .Companion mockCompanion = PowerMockito .mock (VuidManager .Companion .class );
108+ mockVuidManager = PowerMockito .mock (VuidManager .class );
109+ PowerMockito .doReturn (mockVuidManager ).when (mockCompanion ).getInstance ();
110+ Whitebox .setInternalState (
111+ VuidManager .class , "Companion" ,
112+ mockCompanion
113+ );
114+ }
115+
116+ @ After
117+ public void cleanUp () {
104118 }
105119
106120 /**
@@ -400,4 +414,55 @@ public void testBuildWithODP_defaultCommonDataAndIdentifiers() throws Exception
400414 assertEquals (identifiers .size (), 1 );
401415 }
402416
417+ ODPManager .Builder getMockODPManagerBuilder () {
418+ ODPManager .Builder mockBuilder = PowerMockito .mock (ODPManager .Builder .class );
419+ when (mockBuilder .withApiManager (any ())).thenReturn (mockBuilder );
420+ when (mockBuilder .withSegmentCacheSize (any ())).thenReturn (mockBuilder );
421+ when (mockBuilder .withSegmentCacheTimeout (any ())).thenReturn (mockBuilder );
422+ when (mockBuilder .withSegmentManager (any ())).thenReturn (mockBuilder );
423+ when (mockBuilder .withEventManager (any ())).thenReturn (mockBuilder );
424+ when (mockBuilder .withUserCommonData (any ())).thenReturn (mockBuilder );
425+ when (mockBuilder .withUserCommonIdentifiers (any ())).thenReturn (mockBuilder );
426+ return mockBuilder ;
427+ }
428+ @ Test
429+ public void testBuildWithVuidDisabled () throws Exception {
430+ mockStatic (ODPManager .class );
431+ ODPManager .Builder mockBuilder = getMockODPManagerBuilder ();
432+ when (mockBuilder .build ()).thenReturn (mock (ODPManager .class ));
433+ when (ODPManager .builder ()).thenReturn (mockBuilder );
434+
435+ OptimizelyManager manager = OptimizelyManager .builder ()
436+ .withSDKKey (testSdkKey )
437+ .build (mockContext );
438+
439+ verify (mockVuidManager , times (1 )).configure (eq (false ), any (Context .class ));
440+
441+ ArgumentCaptor <Map <String , String >> identifiersCaptor = ArgumentCaptor .forClass (Map .class );
442+ verify (mockBuilder ).withUserCommonIdentifiers (identifiersCaptor .capture ());
443+ Map <String , String > identifiers = identifiersCaptor .getValue ();
444+ assertFalse (identifiers .containsKey ("vuid" ));
445+ }
446+
447+ @ Test
448+ public void testBuildWithVuidEnabled () throws Exception {
449+ mockStatic (ODPManager .class );
450+ ODPManager .Builder mockBuilder = getMockODPManagerBuilder ();
451+ when (mockBuilder .build ()).thenReturn (mock (ODPManager .class ));
452+ when (ODPManager .builder ()).thenReturn (mockBuilder );
453+
454+ when (mockVuidManager .getVuid ()).thenReturn ("vuid_test" );
455+
456+ OptimizelyManager manager = OptimizelyManager .builder ()
457+ .withSDKKey (testSdkKey )
458+ .withVuidEnabled ()
459+ .build (mockContext );
460+
461+ verify (mockVuidManager , times (1 )).configure (eq (true ), any (Context .class ));
462+
463+ ArgumentCaptor <Map <String , String >> identifiersCaptor = ArgumentCaptor .forClass (Map .class );
464+ verify (mockBuilder ).withUserCommonIdentifiers (identifiersCaptor .capture ());
465+ Map <String , String > identifiers = identifiersCaptor .getValue ();
466+ assertEquals (identifiers .get ("vuid" ), "vuid_test" );
467+ }
403468}
0 commit comments