@@ -3615,6 +3615,69 @@ public void isFeatureEnabledReturnsTrueAndDispatchesEventWhenUserIsBucketedIntoA
3615
3615
verify (mockEventHandler , times (1 )).dispatchEvent (any (LogEvent .class ));
3616
3616
}
3617
3617
3618
+ /**
3619
+ * Verify {@link Optimizely#getEnabledFeatures(String, Map)} calls into
3620
+ * {@link Optimizely#isFeatureEnabled(String, String, Map)} for each featureFlag
3621
+ * return List of FeatureFlags that are enabled
3622
+ */
3623
+ @ Test
3624
+ public void getEnabledFeatureWithValidUserId () throws ConfigParseException {
3625
+ assumeTrue (datafileVersion >= Integer .parseInt (ProjectConfig .Version .V4 .toString ()));
3626
+
3627
+ Optimizely spyOptimizely = spy (Optimizely .builder (validDatafile , mockEventHandler )
3628
+ .withConfig (validProjectConfig )
3629
+ .build ());
3630
+ ArrayList <String > featureFlags = (ArrayList <String >) spyOptimizely .getEnabledFeatures (genericUserId ,
3631
+ new HashMap <String , String >());
3632
+ assertFalse (featureFlags .isEmpty ());
3633
+
3634
+ }
3635
+
3636
+
3637
+ /**
3638
+ * Verify {@link Optimizely#getEnabledFeatures(String, Map)} calls into
3639
+ * {@link Optimizely#isFeatureEnabled(String, String, Map)} for each featureFlag sending
3640
+ * userId as empty string
3641
+ * return empty List of FeatureFlags without checking further.
3642
+ */
3643
+ @ Test
3644
+ public void getEnabledFeatureWithEmptyUserId () throws ConfigParseException {
3645
+ assumeTrue (datafileVersion >= Integer .parseInt (ProjectConfig .Version .V4 .toString ()));
3646
+
3647
+ Optimizely spyOptimizely = spy (Optimizely .builder (validDatafile , mockEventHandler )
3648
+ .withConfig (validProjectConfig )
3649
+ .build ());
3650
+ ArrayList <String > featureFlags = (ArrayList <String >) spyOptimizely .getEnabledFeatures ("" ,
3651
+ new HashMap <String , String >());
3652
+ logbackVerifier .expectMessage (Level .ERROR , "Non-empty user ID required" );
3653
+ assertTrue (featureFlags .isEmpty ());
3654
+
3655
+ }
3656
+
3657
+ /**
3658
+ * Verify {@link Optimizely#getEnabledFeatures(String, Map)} calls into
3659
+ * {@link Optimizely#isFeatureEnabled(String, String, Map)} for each featureFlag sending
3660
+ * userId and emptyMap and Mocked {@link Optimizely#isFeatureEnabled(String, String, Map)}
3661
+ * to return false so {@link Optimizely#getEnabledFeatures(String, Map)} will
3662
+ * return empty List of FeatureFlags.
3663
+ */
3664
+ @ Test
3665
+ public void getEnabledFeatureWithMockIsFeatureEnabledToReturnFalse () throws ConfigParseException {
3666
+ assumeTrue (datafileVersion >= Integer .parseInt (ProjectConfig .Version .V4 .toString ()));
3667
+
3668
+ Optimizely spyOptimizely = spy (Optimizely .builder (validDatafile , mockEventHandler )
3669
+ .withConfig (validProjectConfig )
3670
+ .build ());
3671
+ doReturn (false ).when (spyOptimizely ).isFeatureEnabled (
3672
+ any (String .class ),
3673
+ eq (genericUserId ),
3674
+ eq (Collections .<String , String >emptyMap ())
3675
+ );
3676
+ ArrayList <String > featureFlags = (ArrayList <String >) spyOptimizely .getEnabledFeatures (genericUserId ,
3677
+ Collections .<String , String >emptyMap ());
3678
+ assertTrue (featureFlags .isEmpty ());
3679
+ }
3680
+
3618
3681
/**
3619
3682
* Verify {@link Optimizely#getFeatureVariableString(String, String, String)}
3620
3683
* calls through to {@link Optimizely#getFeatureVariableString(String, String, String, Map)}
0 commit comments