16
16
*/
17
17
package com .optimizely .ab .config ;
18
18
19
- import com .fasterxml .jackson .databind .JsonNode ;
20
- import com .fasterxml .jackson .databind .ObjectMapper ;
21
19
import com .optimizely .ab .config .audience .*;
22
20
import org .junit .Test ;
23
21
import static org .junit .Assert .*;
27
25
28
26
public class HoldoutTest {
29
27
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
-
70
28
@ 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 () {
115
30
List <Condition > audienceConditionsScenarios = getAudienceConditionsList ();
116
31
Map <Integer , String > expectedScenarioStringsMap = getExpectedScenariosMap ();
117
32
Map <String , String > audiencesMap = new HashMap <>();
@@ -124,7 +39,8 @@ public void testSerializeConditionScenarios() {
124
39
125
40
if (expectedScenarioStringsMap .size () == audienceConditionsScenarios .size ()) {
126
41
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 ));
128
44
String audiences = holdout .serializeConditions (audiencesMap );
129
45
assertEquals (expectedScenarioStringsMap .get (i +1 ), audiences );
130
46
}
@@ -243,7 +159,8 @@ public List<Condition> getAudienceConditionsList() {
243
159
244
160
OrCondition scenario12 = new OrCondition (scenario12List );
245
161
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.
247
164
AudienceIdCondition invalidAudience = new AudienceIdCondition ("5" );
248
165
List <Condition > invalidIdList = new ArrayList <>();
249
166
invalidIdList .add (invalidAudience );
@@ -278,7 +195,9 @@ private Holdout makeMockHoldoutWithStatus(Holdout.HoldoutStatus status, Conditio
278
195
audienceConditions ,
279
196
Collections .<Variation >emptyList (),
280
197
Collections .<String , String >emptyMap (),
281
- Collections .<TrafficAllocation >emptyList ()
198
+ Collections .<TrafficAllocation >emptyList (),
199
+ Collections .<String >emptyList (),
200
+ Collections .<String >emptyList ()
282
201
);
283
202
}
284
203
}
0 commit comments