1616 */
1717package com .optimizely .ab .config ;
1818
19- import com .fasterxml .jackson .databind .JsonNode ;
20- import com .fasterxml .jackson .databind .ObjectMapper ;
2119import com .optimizely .ab .config .audience .*;
2220import org .junit .Test ;
2321import static org .junit .Assert .*;
2725
2826public class HoldoutTest {
2927
30- // MARK: - Sample Data
31- private static final String id = "11111" ;
32- private static final String key = "background" ;
33- private static final String status = Holdout .HoldoutStatus .RUNNING .toString ();
34-
35- // Create a simple Variation for testing
36- private static Variation createVariation () {
37- return new Variation ("553339214" , "house" , false , Collections .<FeatureVariableUsageInstance >emptyList ());
38- }
39-
40- // Create a simple TrafficAllocation for testing
41- private static TrafficAllocation createTrafficAllocation () {
42- return new TrafficAllocation ("553339214" , 5000 );
43- }
44-
45- // MARK: - JSON Parsing Tests
46-
47- @ Test
48- public void testDeserializeSuccessWithJSONValid () {
49- // Create a Holdout object directly
50- List <String > audienceIds = Collections .singletonList ("33333" );
51- List <Variation > variations = Collections .singletonList (createVariation ());
52- List <TrafficAllocation > trafficAllocations = Collections .singletonList (createTrafficAllocation ());
53-
54- // Create a simple audience condition
55- AudienceIdCondition audienceCondition = new AudienceIdCondition ("33333" );
56-
57- Holdout holdout = new Holdout (id , key , status , audienceIds , audienceCondition ,
58- variations , Collections .<String , String >emptyMap (), trafficAllocations );
59-
60- assertEquals (id , holdout .getId ());
61- assertEquals (key , holdout .getKey ());
62- assertEquals (Holdout .HoldoutStatus .RUNNING .toString (), holdout .getStatus ());
63- assertEquals (1 , holdout .getVariations ().size ());
64- assertEquals (1 , holdout .getTrafficAllocation ().size ());
65- assertEquals (audienceIds , holdout .getAudienceIds ());
66- assertNotNull (holdout .getAudienceConditions ());
67- assertEquals ("" , holdout .getLayerId ()); // Always empty string
68- }
69-
7028 @ Test
71- public void testIsActive () {
72- // Test RUNNING status
73- Holdout runningHoldout = new Holdout (id , key , Holdout .HoldoutStatus .RUNNING .toString (),
74- Collections .<String >emptyList (), null , Collections .<Variation >emptyList (),
75- Collections .<String , String >emptyMap (), Collections .<TrafficAllocation >emptyList ());
76- assertTrue (runningHoldout .isActive ());
77- assertTrue (runningHoldout .isRunning ());
78-
79- // Test DRAFT status
80- Holdout draftHoldout = new Holdout (id , key , Holdout .HoldoutStatus .DRAFT .toString (),
81- Collections .<String >emptyList (), null , Collections .<Variation >emptyList (),
82- Collections .<String , String >emptyMap (), Collections .<TrafficAllocation >emptyList ());
83- assertFalse (draftHoldout .isActive ());
84- assertFalse (draftHoldout .isRunning ());
85-
86- // Test CONCLUDED status
87- Holdout concludedHoldout = new Holdout (id , key , Holdout .HoldoutStatus .CONCLUDED .toString (),
88- Collections .<String >emptyList (), null , Collections .<Variation >emptyList (),
89- Collections .<String , String >emptyMap (), Collections .<TrafficAllocation >emptyList ());
90- assertFalse (concludedHoldout .isActive ());
91- assertFalse (concludedHoldout .isRunning ());
92-
93- // Test ARCHIVED status
94- Holdout archivedHoldout = new Holdout (id , key , Holdout .HoldoutStatus .ARCHIVED .toString (),
95- Collections .<String >emptyList (), null , Collections .<Variation >emptyList (),
96- Collections .<String , String >emptyMap (), Collections .<TrafficAllocation >emptyList ());
97- assertFalse (archivedHoldout .isActive ());
98- assertFalse (archivedHoldout .isRunning ());
99- }
100-
101- @ Test
102- public void testDefaultStatus () {
103- // Create a Holdout with null status
104- Holdout holdout = new Holdout (id , key , null , Collections .<String >emptyList (), null ,
105- Collections .<Variation >emptyList (), Collections .<String , String >emptyMap (),
106- Collections .<TrafficAllocation >emptyList ());
107-
108- assertEquals (Holdout .HoldoutStatus .DRAFT .toString (), holdout .getStatus ());
109- }
110-
111- // MARK: - Audience Serialization Tests
112-
113- @ Test
114- public void testSerializeConditionScenarios () {
29+ public void testStringifyConditionScenarios () {
11530 List <Condition > audienceConditionsScenarios = getAudienceConditionsList ();
11631 Map <Integer , String > expectedScenarioStringsMap = getExpectedScenariosMap ();
11732 Map <String , String > audiencesMap = new HashMap <>();
@@ -124,7 +39,8 @@ public void testSerializeConditionScenarios() {
12439
12540 if (expectedScenarioStringsMap .size () == audienceConditionsScenarios .size ()) {
12641 for (int i = 0 ; i < audienceConditionsScenarios .size () - 1 ; i ++) {
127- Holdout holdout = makeMockHoldoutWithStatus (Holdout .HoldoutStatus .RUNNING , audienceConditionsScenarios .get (i ));
42+ Holdout holdout = makeMockHoldoutWithStatus (Holdout .HoldoutStatus .RUNNING ,
43+ audienceConditionsScenarios .get (i ));
12844 String audiences = holdout .serializeConditions (audiencesMap );
12945 assertEquals (expectedScenarioStringsMap .get (i +1 ), audiences );
13046 }
@@ -243,7 +159,8 @@ public List<Condition> getAudienceConditionsList() {
243159
244160 OrCondition scenario12 = new OrCondition (scenario12List );
245161
246- // Scenario 13 - ["and", ["and", invalidAudienceIdCondition]] which becomes// the scenario of ["and", "and"] and results in empty string.
162+ // Scenario 13 - ["and", ["and", invalidAudienceIdCondition]] which becomes
163+ // the scenario of ["and", "and"] and results in empty string.
247164 AudienceIdCondition invalidAudience = new AudienceIdCondition ("5" );
248165 List <Condition > invalidIdList = new ArrayList <>();
249166 invalidIdList .add (invalidAudience );
@@ -278,7 +195,9 @@ private Holdout makeMockHoldoutWithStatus(Holdout.HoldoutStatus status, Conditio
278195 audienceConditions ,
279196 Collections .<Variation >emptyList (),
280197 Collections .<String , String >emptyMap (),
281- Collections .<TrafficAllocation >emptyList ()
198+ Collections .<TrafficAllocation >emptyList (),
199+ Collections .<String >emptyList (),
200+ Collections .<String >emptyList ()
282201 );
283202 }
284203}
0 commit comments