99import org .junit .jupiter .api .Test ;
1010
1111import static org .mockito .Mockito .*;
12+
13+ import org .awaitility .Awaitility ;
14+
1215import static org .junit .jupiter .api .Assertions .*;
1316
1417public class ProviderTest {
@@ -35,6 +38,11 @@ public void itCanDoABooleanEvaluation() {
3538
3639 OpenFeatureAPI .getInstance ().setProvider (ldProvider );
3740
41+ Awaitility .await ().forever ().until (() -> OpenFeatureAPI
42+ .getInstance ()
43+ .getClient ()
44+ .getBooleanValue ("the-key" , false , evaluationContext ));
45+
3846 assertTrue (OpenFeatureAPI
3947 .getInstance ()
4048 .getClient ()
@@ -60,6 +68,11 @@ public void itCanDoAStringEvaluation() {
6068
6169 OpenFeatureAPI .getInstance ().setProvider (ldProvider );
6270
71+ Awaitility .await ().forever ().until (() -> OpenFeatureAPI
72+ .getInstance ()
73+ .getClient ()
74+ .getStringValue ("the-key" , "default" , evaluationContext ).equals ("evaluated" ));
75+
6376 assertEquals ("evaluated" , OpenFeatureAPI
6477 .getInstance ()
6578 .getClient ()
@@ -83,6 +96,12 @@ public void itCanDoADoubleEvaluation() {
8396 .thenReturn (EvaluationDetail .fromValue (1.0 , 42 , EvaluationReason .targetMatch ()));
8497
8598 OpenFeatureAPI .getInstance ().setProvider (ldProvider );
99+
100+ Awaitility .await ().forever ().until (() -> OpenFeatureAPI
101+ .getInstance ()
102+ .getClient ()
103+ .getDoubleValue ("the-key" , 0.0 , evaluationContext ) != 0.0 );
104+
86105 assertEquals (1.0 , OpenFeatureAPI
87106 .getInstance ()
88107 .getClient ()
@@ -122,8 +141,82 @@ public void itCanDoAValueEvaluation() {
122141 .getObjectDetails ("the-key" , new Value (), evaluationContext );
123142
124143 assertEquals ("aValue" , detailed .getValue ().asStructure ().getValue ("aKey" ).asString ());
125-
126144 assertEquals ("84" , detailed .getVariant ());
127145 assertEquals ("TARGETING_MATCH" , detailed .getReason ());
128146 }
147+
148+ @ Test
149+ public void itCanTrackNoTrackingEventDetails () {
150+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
151+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
152+
153+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
154+
155+ OpenFeatureAPI
156+ .getInstance ()
157+ .getClient ().track ("metric-key" , evaluationContext );
158+
159+ verify (mockedLdClient ).track (
160+ "metric-key" ,
161+ evaluationContextConverter .toLdContext (evaluationContext ));
162+ }
163+
164+ @ Test
165+ public void itCanTrackEmptyTrackingEventDetails () {
166+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
167+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
168+
169+ TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails (null );
170+
171+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
172+
173+ OpenFeatureAPI
174+ .getInstance ()
175+ .getClient ().track ("metric-key" , evaluationContext , trackingEventDetails );
176+
177+ verify (mockedLdClient ).track (
178+ "metric-key" ,
179+ evaluationContextConverter .toLdContext (evaluationContext ));
180+ }
181+
182+ @ Test
183+ public void itCanTrackTrackingEventDetailsWithNoValue () {
184+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
185+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
186+ ValueConverter valueConverter = new ValueConverter (null );
187+
188+ TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails (null ).add ("currency" , "USD" );
189+
190+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
191+
192+ OpenFeatureAPI
193+ .getInstance ()
194+ .getClient ().track ("metric-key" , evaluationContext , trackingEventDetails );
195+
196+ verify (mockedLdClient ).trackData (
197+ "metric-key" ,
198+ evaluationContextConverter .toLdContext (evaluationContext ),
199+ valueConverter .toLdValue (new Value (trackingEventDetails )));
200+ }
201+
202+ @ Test
203+ public void itCanTrackFullTrackingEventDetails () {
204+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
205+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
206+ ValueConverter valueConverter = new ValueConverter (null );
207+
208+ TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails (99.77 ).add ("currency" , "USD" );
209+
210+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
211+
212+ OpenFeatureAPI
213+ .getInstance ()
214+ .getClient ().track ("metric-key" , evaluationContext , trackingEventDetails );
215+
216+ verify (mockedLdClient ).trackMetric (
217+ "metric-key" ,
218+ evaluationContextConverter .toLdContext (evaluationContext ),
219+ valueConverter .toLdValue (new Value (trackingEventDetails )),
220+ 99.77 );
221+ }
129222}
0 commit comments