@@ -611,6 +611,44 @@ public void getVariationForFeatureInRolloutReturnsVariationWhenUserFailsTrafficI
611611 verify (mockBucketer , times (2 )).bucket (any (Experiment .class ), anyString ());
612612 }
613613
614+ /**
615+ * Verify that {@link DecisionService#getVariationForFeatureInRollout(FeatureFlag, String, Map)}
616+ * returns the variation of "English Citizens" rule
617+ * when the user fails targeting for previous rules, but passes targeting and traffic for Rule 3.
618+ */
619+ @ Test
620+ public void getVariationForFeatureInRolloutReturnsVariationWhenUserFailsTargetingInPreviousRulesButPassesRule3 () {
621+ Bucketer mockBucketer = mock (Bucketer .class );
622+ Rollout rollout = ROLLOUT_2 ;
623+ Experiment englishCitizensRule = rollout .getExperiments ().get (2 );
624+ Variation englishCitizenVariation = englishCitizensRule .getVariations ().get (0 );
625+ Experiment everyoneElseRule = rollout .getExperiments ().get (rollout .getExperiments ().size () - 1 );
626+ Variation everyoneElseVariation = everyoneElseRule .getVariations ().get (0 );
627+ when (mockBucketer .bucket (any (Experiment .class ), anyString ())).thenReturn (null );
628+ when (mockBucketer .bucket (eq (everyoneElseRule ), anyString ())).thenReturn (everyoneElseVariation );
629+ when (mockBucketer .bucket (eq (englishCitizensRule ), anyString ())).thenReturn (englishCitizenVariation );
630+
631+ DecisionService decisionService = new DecisionService (
632+ mockBucketer ,
633+ mockErrorHandler ,
634+ v4ProjectConfig ,
635+ null
636+ );
637+
638+ assertEquals (englishCitizenVariation ,
639+ decisionService .getVariationForFeatureInRollout (
640+ FEATURE_FLAG_MULTI_VARIATE_FEATURE ,
641+ genericUserId ,
642+ Collections .singletonMap (
643+ ATTRIBUTE_NATIONALITY_KEY , AUDIENCE_ENGLISH_CITIZENS_VALUE
644+ )
645+ )
646+ );
647+
648+ // verify user is only bucketed once for everyone else rule
649+ verify (mockBucketer , times (1 )).bucket (any (Experiment .class ), anyString ());
650+ }
651+
614652 //========= white list tests ==========/
615653
616654 /**
0 commit comments