@@ -3479,15 +3479,13 @@ public void isFeatureEnabledReturnsTrueButDoesNotSendWhenUserIsBucketedIntoVaria
34793479 * false so feature enabled will return false
34803480 */
34813481 @ Test
3482- public void isFeatureEnabledWithExperimentKeyForcedOfFeatureEnabledFalse () throws Exception {
3482+ public void isFeatureEnabledWithExperimentKeyForcedOffFeatureEnabledFalse () throws Exception {
34833483 assumeTrue (datafileVersion >= Integer .parseInt (ProjectConfig .Version .V4 .toString ()));
34843484 Experiment activatedExperiment = validProjectConfig .getExperimentKeyMapping ().get (EXPERIMENT_MULTIVARIATE_EXPERIMENT_KEY );
34853485 Variation forcedVariation = activatedExperiment .getVariations ().get (2 );
3486- EventBuilder mockEventBuilder = mock (EventBuilder .class );
34873486
34883487 Optimizely optimizely = Optimizely .builder (validDatafile , mockEventHandler )
34893488 .withBucketing (mockBucketer )
3490- .withEventBuilder (mockEventBuilder )
34913489 .withConfig (validProjectConfig )
34923490 .withErrorHandler (mockErrorHandler )
34933491 .build ();
@@ -3506,11 +3504,9 @@ public void isFeatureEnabledWithExperimentKeyForcedWithNoFeatureEnabledSet() thr
35063504 assumeTrue (datafileVersion >= Integer .parseInt (ProjectConfig .Version .V4 .toString ()));
35073505 Experiment activatedExperiment = validProjectConfig .getExperimentKeyMapping ().get (EXPERIMENT_DOUBLE_FEATURE_EXPERIMENT_KEY );
35083506 Variation forcedVariation = activatedExperiment .getVariations ().get (1 );
3509- EventBuilder mockEventBuilder = mock (EventBuilder .class );
35103507
35113508 Optimizely optimizely = Optimizely .builder (validDatafile , mockEventHandler )
35123509 .withBucketing (mockBucketer )
3513- .withEventBuilder (mockEventBuilder )
35143510 .withConfig (validProjectConfig )
35153511 .withErrorHandler (mockErrorHandler )
35163512 .build ();
@@ -3584,6 +3580,44 @@ public void isFeatureEnabledFalseWhenFeatureEnabledOfVariationIsFalse() throws E
35843580
35853581 }
35863582
3583+ /**
3584+ * Verify {@link Optimizely#isFeatureEnabled(String, String)} calls into
3585+ * {@link Optimizely#isFeatureEnabled(String, String, Map)} and they both
3586+ * return False
3587+ * when the user is bucketed an feature test variation that is turned off.
3588+ * @throws Exception
3589+ */
3590+ @ Test
3591+ public void isFeatureEnabledReturnsFalseAndDispatchesWhenUserIsBucketedIntoAnExperimentVariationToggleOff () throws Exception {
3592+ assumeTrue (datafileVersion >= Integer .parseInt (ProjectConfig .Version .V4 .toString ()));
3593+
3594+ String validFeatureKey = FEATURE_MULTI_VARIATE_FEATURE_KEY ;
3595+
3596+ Optimizely spyOptimizely = spy (Optimizely .builder (validDatafile , mockEventHandler )
3597+ .withConfig (validProjectConfig )
3598+ .withDecisionService (mockDecisionService )
3599+ .build ());
3600+
3601+ Experiment activatedExperiment = validProjectConfig .getExperimentKeyMapping ().get (EXPERIMENT_MULTIVARIATE_EXPERIMENT_KEY );
3602+ Variation variation = new Variation ("2" , "variation_toggled_off" , false , null );
3603+
3604+ FeatureDecision featureDecision = new FeatureDecision (activatedExperiment , variation , FeatureDecision .DecisionSource .EXPERIMENT );
3605+ doReturn (featureDecision ).when (mockDecisionService ).getVariationForFeature (
3606+ any (FeatureFlag .class ),
3607+ anyString (),
3608+ anyMapOf (String .class , String .class )
3609+ );
3610+
3611+ assertFalse (spyOptimizely .isFeatureEnabled (validFeatureKey , genericUserId ));
3612+
3613+ logbackVerifier .expectMessage (
3614+ Level .INFO ,
3615+ "Feature \" " + validFeatureKey +
3616+ "\" is not enabled for user \" " + genericUserId + "\" ."
3617+ );
3618+ verify (mockEventHandler , times (1 )).dispatchEvent (any (LogEvent .class ));
3619+ }
3620+
35873621 /** Integration Test
35883622 * Verify {@link Optimizely#isFeatureEnabled(String, String, Map)}
35893623 * returns True
0 commit comments