@@ -474,6 +474,44 @@ public void getVariationForFeatureInRolloutReturnsVariationWhenUserFailsTrafficI
474474 verify (mockBucketer , times (2 )).bucket (any (Experiment .class ), anyString ());
475475 }
476476
477+ /**
478+ * Verify that {@link DecisionService#getVariationForFeatureInRollout(FeatureFlag, String, Map)}
479+ * returns the variation of "English Citizens" rule
480+ * when the user fails targeting for previous rules, but passes targeting and traffic for Rule 3.
481+ */
482+ @ Test
483+ public void getVariationForFeatureInRolloutReturnsVariationWhenUserFailsTargetingInPreviousRulesButPassesRule3 () {
484+ Bucketer mockBucketer = mock (Bucketer .class );
485+ Rollout rollout = ROLLOUT_2 ;
486+ Experiment englishCitizensRule = rollout .getExperiments ().get (2 );
487+ Variation englishCitizenVariation = englishCitizensRule .getVariations ().get (0 );
488+ Experiment everyoneElseRule = rollout .getExperiments ().get (rollout .getExperiments ().size () - 1 );
489+ Variation everyoneElseVariation = everyoneElseRule .getVariations ().get (0 );
490+ when (mockBucketer .bucket (any (Experiment .class ), anyString ())).thenReturn (null );
491+ when (mockBucketer .bucket (eq (everyoneElseRule ), anyString ())).thenReturn (everyoneElseVariation );
492+ when (mockBucketer .bucket (eq (englishCitizensRule ), anyString ())).thenReturn (englishCitizenVariation );
493+
494+ DecisionService decisionService = new DecisionService (
495+ mockBucketer ,
496+ mockErrorHandler ,
497+ v4ProjectConfig ,
498+ null
499+ );
500+
501+ assertEquals (englishCitizenVariation ,
502+ decisionService .getVariationForFeatureInRollout (
503+ FEATURE_FLAG_MULTI_VARIATE_FEATURE ,
504+ genericUserId ,
505+ Collections .singletonMap (
506+ ATTRIBUTE_NATIONALITY_KEY , AUDIENCE_ENGLISH_CITIZENS_VALUE
507+ )
508+ )
509+ );
510+
511+ // verify user is only bucketed once for everyone else rule
512+ verify (mockBucketer , times (1 )).bucket (any (Experiment .class ), anyString ());
513+ }
514+
477515 //========= white list tests ==========/
478516
479517 /**
0 commit comments