Skip to content

Commit 524fc9f

Browse files
feat: add HOLDOUT_TYPEDAUDIENCE_HOLDOUT to ValidProjectConfigV4
- Added public constant HOLDOUT_TYPEDAUDIENCE_HOLDOUT to class ValidProjectConfigV4 - Updated feature flag constants to public static in class ValidProjectConfigV4 - Updated holdout constants to public static in class ValidProjectConfigV4 - Created unit test userMeetsHoldoutAudienceConditions in DecisionServiceTest
1 parent 8f831f1 commit 524fc9f

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

core-api/src/test/java/com/optimizely/ab/bucketing/DecisionServiceTest.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
import org.mockito.junit.MockitoJUnit;
5252
import org.mockito.junit.MockitoRule;
5353

54-
import com.fasterxml.jackson.annotation.JsonFormat;
5554
import com.optimizely.ab.Optimizely;
5655
import com.optimizely.ab.OptimizelyDecisionContext;
5756
import com.optimizely.ab.OptimizelyForcedDecision;
@@ -80,6 +79,7 @@
8079
import static com.optimizely.ab.config.ValidProjectConfigV4.HOLDOUT_BASIC_HOLDOUT;
8180
import static com.optimizely.ab.config.ValidProjectConfigV4.HOLDOUT_EXCLUDED_FLAGS_HOLDOUT;
8281
import static com.optimizely.ab.config.ValidProjectConfigV4.HOLDOUT_INCLUDED_FLAGS_HOLDOUT;
82+
import static com.optimizely.ab.config.ValidProjectConfigV4.HOLDOUT_TYPEDAUDIENCE_HOLDOUT;
8383
import static com.optimizely.ab.config.ValidProjectConfigV4.ROLLOUT_2;
8484
import static com.optimizely.ab.config.ValidProjectConfigV4.ROLLOUT_3_EVERYONE_ELSE_RULE;
8585
import static com.optimizely.ab.config.ValidProjectConfigV4.ROLLOUT_3_EVERYONE_ELSE_RULE_ENABLED_VARIATION;
@@ -1355,4 +1355,30 @@ public void excludedFlagsHoldoutAppliesToAllExceptSpecified() {
13551355

13561356
logbackVerifier.expectMessage(Level.INFO, "User (user123) is in variation (ho_off_key) of holdout (holdout_excluded_flags).");
13571357
}
1358+
1359+
@Test
1360+
public void userMeetsHoldoutAudienceConditions() {
1361+
ProjectConfig holdoutProjectConfig = generateValidProjectConfigV4_holdout();
1362+
1363+
Bucketer mockBucketer = new Bucketer();
1364+
1365+
DecisionService decisionService = new DecisionService(mockBucketer, mockErrorHandler, null);
1366+
1367+
Map<String, Object> attributes = new HashMap<>();
1368+
attributes.put("$opt_bucketing_id", "ppid543400");
1369+
attributes.put("booleanKey", true);
1370+
attributes.put("integerKey", 1);
1371+
1372+
FeatureDecision featureDecision = decisionService.getVariationForFeature(
1373+
FEATURE_FLAG_BOOLEAN_FEATURE,
1374+
optimizely.createUserContext("user123", attributes),
1375+
holdoutProjectConfig
1376+
).getResult();
1377+
1378+
assertEquals(HOLDOUT_TYPEDAUDIENCE_HOLDOUT, featureDecision.experiment);
1379+
assertEquals(VARIATION_HOLDOUT_VARIATION_OFF, featureDecision.variation);
1380+
assertEquals(FeatureDecision.DecisionSource.HOLDOUT, featureDecision.decisionSource);
1381+
1382+
logbackVerifier.expectMessage(Level.INFO, "User (user123) is in variation (ho_off_key) of holdout (typed_audience_holdout).");
1383+
}
13581384
}

core-api/src/test/java/com/optimizely/ab/config/ValidProjectConfigV4.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ public class ValidProjectConfigV4 {
294294
FeatureVariable.BOOLEAN_TYPE,
295295
null
296296
);
297-
private static final FeatureFlag FEATURE_FLAG_SINGLE_VARIABLE_BOOLEAN = new FeatureFlag(
297+
public static final FeatureFlag FEATURE_FLAG_SINGLE_VARIABLE_BOOLEAN = new FeatureFlag(
298298
FEATURE_SINGLE_VARIABLE_BOOLEAN_ID,
299299
FEATURE_SINGLE_VARIABLE_BOOLEAN_KEY,
300300
"",
@@ -574,7 +574,7 @@ public class ValidProjectConfigV4 {
574574
null
575575
);
576576

577-
private static final Holdout HOLDOUT_INCLUDED_FLAGS_HOLDOUT = new Holdout(
577+
public static final Holdout HOLDOUT_INCLUDED_FLAGS_HOLDOUT = new Holdout(
578578
"1007543323427",
579579
"holdout_included_flags",
580580
Holdout.HoldoutStatus.RUNNING.toString(),
@@ -597,7 +597,7 @@ public class ValidProjectConfigV4 {
597597
null
598598
);
599599

600-
private static final Holdout HOLDOUT_EXCLUDED_FLAGS_HOLDOUT = new Holdout(
600+
public static final Holdout HOLDOUT_EXCLUDED_FLAGS_HOLDOUT = new Holdout(
601601
"100753234214",
602602
"holdout_excluded_flags",
603603
Holdout.HoldoutStatus.RUNNING.toString(),
@@ -620,7 +620,7 @@ public class ValidProjectConfigV4 {
620620
)
621621
);
622622

623-
private static final Holdout HOLDOUT_TYPEDAUDIENCE_HOLDOUT = new Holdout(
623+
public static final Holdout HOLDOUT_TYPEDAUDIENCE_HOLDOUT = new Holdout(
624624
"10075323429",
625625
"typed_audience_holdout",
626626
Holdout.HoldoutStatus.RUNNING.toString(),

0 commit comments

Comments
 (0)