@@ -1628,6 +1628,8 @@ public void fetchQualifiedSegments() {
16281628 Mockito .when (mockODPManager .getSegmentManager ()).thenReturn (mockODPSegmentManager );
16291629
16301630 Optimizely optimizely = Optimizely .builder ()
1631+ .withDatafile (datafile )
1632+ .withEventProcessor (new ForwardingEventProcessor (eventHandler , null ))
16311633 .withODPManager (mockODPManager )
16321634 .build ();
16331635
@@ -1640,9 +1642,33 @@ public void fetchQualifiedSegments() {
16401642 verify (mockODPSegmentManager ).getQualifiedSegments ("test-user" , Collections .singletonList (ODPSegmentOption .RESET_CACHE ));
16411643 }
16421644
1645+ @ Test
1646+ public void fetchQualifiedSegmentsErrorWhenConfigIsInvalid () {
1647+ ProjectConfigManager mockProjectConfigManager = mock (ProjectConfigManager .class );
1648+ Mockito .when (mockProjectConfigManager .getConfig ()).thenReturn (null );
1649+ ODPEventManager mockODPEventManager = mock (ODPEventManager .class );
1650+ ODPSegmentManager mockODPSegmentManager = mock (ODPSegmentManager .class );
1651+ ODPManager mockODPManager = mock (ODPManager .class );
1652+
1653+ Mockito .when (mockODPManager .getEventManager ()).thenReturn (mockODPEventManager );
1654+ Mockito .when (mockODPManager .getSegmentManager ()).thenReturn (mockODPSegmentManager );
1655+
1656+ Optimizely optimizely = Optimizely .builder ()
1657+ .withConfigManager (mockProjectConfigManager )
1658+ .withODPManager (mockODPManager )
1659+ .build ();
1660+
1661+ OptimizelyUserContext userContext = optimizely .createUserContext ("test-user" );
1662+
1663+ assertFalse (userContext .fetchQualifiedSegments ());
1664+ logbackVerifier .expectMessage (Level .ERROR , "Optimizely instance is not valid, failing fetchQualifiedSegments call." );
1665+ }
1666+
16431667 @ Test
16441668 public void fetchQualifiedSegmentsError () {
16451669 Optimizely optimizely = Optimizely .builder ()
1670+ .withDatafile (datafile )
1671+ .withEventProcessor (new ForwardingEventProcessor (eventHandler , null ))
16461672 .build ();
16471673 OptimizelyUserContext userContext = optimizely .createUserContext ("test-user" );
16481674
@@ -1667,6 +1693,8 @@ public void fetchQualifiedSegmentsAsync() throws InterruptedException {
16671693 Mockito .when (mockODPManager .getSegmentManager ()).thenReturn (mockODPSegmentManager );
16681694
16691695 Optimizely optimizely = Optimizely .builder ()
1696+ .withDatafile (datafile )
1697+ .withEventProcessor (new ForwardingEventProcessor (eventHandler , null ))
16701698 .withODPManager (mockODPManager )
16711699 .build ();
16721700
@@ -1698,6 +1726,8 @@ public void fetchQualifiedSegmentsAsync() throws InterruptedException {
16981726 @ Test
16991727 public void fetchQualifiedSegmentsAsyncError () throws InterruptedException {
17001728 Optimizely optimizely = Optimizely .builder ()
1729+ .withDatafile (datafile )
1730+ .withEventProcessor (new ForwardingEventProcessor (eventHandler , null ))
17011731 .build ();
17021732
17031733 OptimizelyUserContext userContext = optimizely .createUserContext ("test-user" );
@@ -1713,6 +1743,57 @@ public void fetchQualifiedSegmentsAsyncError() throws InterruptedException {
17131743 logbackVerifier .expectMessage (Level .ERROR , "Audience segments fetch failed (ODP is not enabled)." );
17141744 }
17151745
1746+ @ Test
1747+ public void fetchQualifiedSegmentsAsyncErrorWhenConfigIsInvalid () throws InterruptedException {
1748+ ProjectConfigManager mockProjectConfigManager = mock (ProjectConfigManager .class );
1749+ Mockito .when (mockProjectConfigManager .getConfig ()).thenReturn (null );
1750+ ODPEventManager mockODPEventManager = mock (ODPEventManager .class );
1751+ ODPSegmentManager mockODPSegmentManager = mock (ODPSegmentManager .class );
1752+ ODPManager mockODPManager = mock (ODPManager .class );
1753+
1754+ Mockito .when (mockODPManager .getEventManager ()).thenReturn (mockODPEventManager );
1755+ Mockito .when (mockODPManager .getSegmentManager ()).thenReturn (mockODPSegmentManager );
1756+
1757+ Optimizely optimizely = Optimizely .builder ()
1758+ .withConfigManager (mockProjectConfigManager )
1759+ .withODPManager (mockODPManager )
1760+ .build ();
1761+
1762+ OptimizelyUserContext userContext = optimizely .createUserContext ("test-user" );
1763+
1764+ CountDownLatch countDownLatch = new CountDownLatch (1 );
1765+ userContext .fetchQualifiedSegments ((Boolean isFetchSuccessful ) -> {
1766+ assertFalse (isFetchSuccessful );
1767+ countDownLatch .countDown ();
1768+ });
1769+
1770+ countDownLatch .await ();
1771+ assertEquals (null , userContext .getQualifiedSegments ());
1772+ logbackVerifier .expectMessage (Level .ERROR , "Optimizely instance is not valid, failing fetchQualifiedSegments call." );
1773+ }
1774+
1775+ @ Test
1776+ public void identifyUserErrorWhenConfigIsInvalid () {
1777+ ODPEventManager mockODPEventManager = mock (ODPEventManager .class );
1778+ ODPSegmentManager mockODPSegmentManager = mock (ODPSegmentManager .class );
1779+ ODPManager mockODPManager = mock (ODPManager .class );
1780+ ProjectConfigManager mockProjectConfigManager = mock (ProjectConfigManager .class );
1781+ Mockito .when (mockProjectConfigManager .getConfig ()).thenReturn (null );
1782+ Mockito .when (mockODPManager .getEventManager ()).thenReturn (mockODPEventManager );
1783+ Mockito .when (mockODPManager .getSegmentManager ()).thenReturn (mockODPSegmentManager );
1784+
1785+ Optimizely optimizely = Optimizely .builder ()
1786+ .withConfigManager (mockProjectConfigManager )
1787+ .withODPManager (mockODPManager )
1788+ .build ();
1789+
1790+ optimizely .createUserContext ("test-user" );
1791+ verify (mockODPEventManager , never ()).identifyUser ("test-user" );
1792+ Mockito .reset (mockODPEventManager );
1793+
1794+ logbackVerifier .expectMessage (Level .ERROR , "Optimizely instance is not valid, failing identifyUser call." );
1795+ }
1796+
17161797 @ Test
17171798 public void identifyUser () {
17181799 ODPEventManager mockODPEventManager = mock (ODPEventManager .class );
@@ -1723,6 +1804,8 @@ public void identifyUser() {
17231804 Mockito .when (mockODPManager .getSegmentManager ()).thenReturn (mockODPSegmentManager );
17241805
17251806 Optimizely optimizely = Optimizely .builder ()
1807+ .withDatafile (datafile )
1808+ .withEventProcessor (new ForwardingEventProcessor (eventHandler , null ))
17261809 .withODPManager (mockODPManager )
17271810 .build ();
17281811
0 commit comments