@@ -3615,6 +3615,69 @@ public void isFeatureEnabledReturnsTrueAndDispatchesEventWhenUserIsBucketedIntoA
36153615 verify (mockEventHandler , times (1 )).dispatchEvent (any (LogEvent .class ));
36163616 }
36173617
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+
36183681 /**
36193682 * Verify {@link Optimizely#getFeatureVariableString(String, String, String)}
36203683 * calls through to {@link Optimizely#getFeatureVariableString(String, String, String, Map)}
0 commit comments