@@ -145,7 +145,28 @@ public OptimizelyTest(String validDatafile, String noAudienceDatafile) throws Co
145
145
}
146
146
147
147
@ Test
148
- public void testClose () throws IOException {
148
+ public void testClose () throws Exception {
149
+ // Check for AutoCloseable
150
+ EventHandler mockAutoCloseableEventHandler = mock (
151
+ EventHandler .class ,
152
+ withSettings ().extraInterfaces (AutoCloseable .class )
153
+ );
154
+ ProjectConfigManager mockAutoCloseableProjectConfigManager = mock (
155
+ ProjectConfigManager .class ,
156
+ withSettings ().extraInterfaces (AutoCloseable .class )
157
+ );
158
+
159
+ Optimizely optimizely = Optimizely .builder ()
160
+ .withEventHandler (mockAutoCloseableEventHandler )
161
+ .withConfigManager (mockAutoCloseableProjectConfigManager )
162
+ .build ();
163
+
164
+ optimizely .close ();
165
+
166
+ verify ((AutoCloseable ) mockAutoCloseableEventHandler ).close ();
167
+ verify ((AutoCloseable ) mockAutoCloseableProjectConfigManager ).close ();
168
+
169
+ // Check for Closeable
149
170
EventHandler mockCloseableEventHandler = mock (
150
171
EventHandler .class ,
151
172
withSettings ().extraInterfaces (Closeable .class )
@@ -155,7 +176,7 @@ public void testClose() throws IOException {
155
176
withSettings ().extraInterfaces (Closeable .class )
156
177
);
157
178
158
- Optimizely optimizely = Optimizely .builder ()
179
+ optimizely = Optimizely .builder ()
159
180
.withEventHandler (mockCloseableEventHandler )
160
181
.withConfigManager (mockCloseableProjectConfigManager )
161
182
.build ();
@@ -167,44 +188,44 @@ public void testClose() throws IOException {
167
188
}
168
189
169
190
@ Test
170
- public void testCloseConfigManagerThrowsException () throws IOException {
171
- EventHandler mockCloseableEventHandler = mock (
191
+ public void testCloseConfigManagerThrowsException () throws Exception {
192
+ EventHandler mockAutoCloseableEventHandler = mock (
172
193
EventHandler .class ,
173
- withSettings ().extraInterfaces (Closeable .class )
194
+ withSettings ().extraInterfaces (AutoCloseable .class )
174
195
);
175
- ProjectConfigManager mockCloseableProjectConfigManager = mock (
196
+ ProjectConfigManager mockAutoCloseableProjectConfigManager = mock (
176
197
ProjectConfigManager .class ,
177
- withSettings ().extraInterfaces (Closeable .class )
198
+ withSettings ().extraInterfaces (AutoCloseable .class )
178
199
);
179
200
180
201
Optimizely optimizely = Optimizely .builder ()
181
- .withEventHandler (mockCloseableEventHandler )
182
- .withConfigManager (mockCloseableProjectConfigManager )
202
+ .withEventHandler (mockAutoCloseableEventHandler )
203
+ .withConfigManager (mockAutoCloseableProjectConfigManager )
183
204
.build ();
184
205
185
- doThrow (new IOException ()).when ((Closeable ) mockCloseableProjectConfigManager ).close ();
186
- logbackVerifier .expectMessage (Level .WARN , "Unexpected exception on trying to close " + mockCloseableProjectConfigManager + "." );
206
+ doThrow (new IOException ()).when ((AutoCloseable ) mockAutoCloseableProjectConfigManager ).close ();
207
+ logbackVerifier .expectMessage (Level .WARN , "Unexpected exception on trying to close " + mockAutoCloseableProjectConfigManager + "." );
187
208
optimizely .close ();
188
209
}
189
210
190
211
@ Test
191
- public void testCloseEventHandlerThrowsException () throws IOException {
192
- EventHandler mockCloseableEventHandler = mock (
212
+ public void testCloseEventHandlerThrowsException () throws Exception {
213
+ EventHandler mockAutoCloseableEventHandler = mock (
193
214
EventHandler .class ,
194
- withSettings ().extraInterfaces (Closeable .class )
215
+ withSettings ().extraInterfaces (AutoCloseable .class )
195
216
);
196
- ProjectConfigManager mockCloseableProjectConfigManager = mock (
217
+ ProjectConfigManager mockAutoCloseableProjectConfigManager = mock (
197
218
ProjectConfigManager .class ,
198
- withSettings ().extraInterfaces (Closeable .class )
219
+ withSettings ().extraInterfaces (AutoCloseable .class )
199
220
);
200
221
201
222
Optimizely optimizely = Optimizely .builder ()
202
- .withEventHandler (mockCloseableEventHandler )
203
- .withConfigManager (mockCloseableProjectConfigManager )
223
+ .withEventHandler (mockAutoCloseableEventHandler )
224
+ .withConfigManager (mockAutoCloseableProjectConfigManager )
204
225
.build ();
205
226
206
- doThrow (new IOException ()).when ((Closeable ) mockCloseableEventHandler ).close ();
207
- logbackVerifier .expectMessage (Level .WARN , "Unexpected exception on trying to close " + mockCloseableEventHandler + "." );
227
+ doThrow (new IOException ()).when ((AutoCloseable ) mockAutoCloseableEventHandler ).close ();
228
+ logbackVerifier .expectMessage (Level .WARN , "Unexpected exception on trying to close " + mockAutoCloseableEventHandler + "." );
208
229
optimizely .close ();
209
230
}
210
231
@@ -2861,9 +2882,9 @@ public void getEnabledFeaturesWithListenerMultipleFeatureEnabled() throws Except
2861
2882
2862
2883
/**
2863
2884
* Verify {@link Optimizely#getEnabledFeatures(String, Map)} calls into
2864
- * {@link Optimizely#isFeatureEnabled(String, String, Map) } for each featureFlag sending
2885
+ * {@link DecisionService#getVariationForFeature } for each featureFlag sending
2865
2886
* userId and emptyMap and Mocked {@link Optimizely#isFeatureEnabled(String, String, Map)}
2866
- * to return false so {@link Optimizely#getEnabledFeatures(String, Map)} will
2887
+ * to return feature disabled so {@link Optimizely#getEnabledFeatures(String, Map)} will
2867
2888
* return empty List of FeatureFlags and no notification listener will get called.
2868
2889
*/
2869
2890
@ Test
@@ -2873,13 +2894,16 @@ public void getEnabledFeaturesWithNoFeatureEnabled() throws Exception {
2873
2894
isListenerCalled = false ;
2874
2895
Optimizely spyOptimizely = spy (Optimizely .builder (validDatafile , mockEventHandler )
2875
2896
.withConfig (validProjectConfig )
2897
+ .withDecisionService (mockDecisionService )
2876
2898
.build ());
2877
- doReturn (false ).when (spyOptimizely ).isFeatureEnabled (
2878
- any (String .class ),
2879
- eq (genericUserId ),
2880
- eq (Collections .<String , String >emptyMap ())
2881
- );
2882
2899
2900
+ FeatureDecision featureDecision = new FeatureDecision (null , null , FeatureDecision .DecisionSource .ROLLOUT );
2901
+ doReturn (featureDecision ).when (mockDecisionService ).getVariationForFeature (
2902
+ any (FeatureFlag .class ),
2903
+ anyString (),
2904
+ anyMapOf (String .class , String .class ),
2905
+ any (ProjectConfig .class )
2906
+ );
2883
2907
int notificationId = spyOptimizely .addDecisionNotificationHandler ( decisionNotification -> { });
2884
2908
2885
2909
ArrayList <String > featureFlags = (ArrayList <String >) spyOptimizely .getEnabledFeatures (genericUserId ,
@@ -4839,23 +4863,27 @@ public void getEnabledFeatureWithNullUserID() throws ConfigParseException {
4839
4863
4840
4864
/**
4841
4865
* Verify {@link Optimizely#getEnabledFeatures(String, Map)} calls into
4842
- * {@link Optimizely#isFeatureEnabled(String, String, Map)} for each featureFlag sending
4843
- * userId and emptyMap and Mocked {@link Optimizely#isFeatureEnabled(String, String, Map)}
4844
- * to return false so {@link Optimizely#getEnabledFeatures(String, Map)} will
4866
+ * {@link DecisionService#getVariationForFeature} to return feature
4867
+ * disabled so {@link Optimizely#getEnabledFeatures(String, Map)} will
4845
4868
* return empty List of FeatureFlags.
4846
4869
*/
4847
4870
@ Test
4848
- public void getEnabledFeatureWithMockIsFeatureEnabledToReturnFalse () throws ConfigParseException {
4871
+ public void getEnabledFeatureWithMockDecisionService () throws ConfigParseException {
4849
4872
assumeTrue (datafileVersion >= Integer .parseInt (ProjectConfig .Version .V4 .toString ()));
4850
4873
4851
4874
Optimizely spyOptimizely = spy (Optimizely .builder (validDatafile , mockEventHandler )
4852
4875
.withConfig (validProjectConfig )
4876
+ .withDecisionService (mockDecisionService )
4853
4877
.build ());
4854
- doReturn (false ).when (spyOptimizely ).isFeatureEnabled (
4855
- any (String .class ),
4856
- eq (genericUserId ),
4857
- eq (Collections .<String , String >emptyMap ())
4878
+
4879
+ FeatureDecision featureDecision = new FeatureDecision (null , null , FeatureDecision .DecisionSource .ROLLOUT );
4880
+ doReturn (featureDecision ).when (mockDecisionService ).getVariationForFeature (
4881
+ any (FeatureFlag .class ),
4882
+ anyString (),
4883
+ anyMapOf (String .class , String .class ),
4884
+ any (ProjectConfig .class )
4858
4885
);
4886
+
4859
4887
ArrayList <String > featureFlags = (ArrayList <String >) spyOptimizely .getEnabledFeatures (genericUserId ,
4860
4888
Collections .<String , String >emptyMap ());
4861
4889
assertTrue (featureFlags .isEmpty ());
0 commit comments