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 ()
@@ -126,4 +145,79 @@ public void itCanDoAValueEvaluation() {
126145 assertEquals ("84" , detailed .getVariant ());
127146 assertEquals ("TARGETING_MATCH" , detailed .getReason ());
128147 }
148+
149+ @ Test
150+ public void itCanTrackNoTrackingEventDetails () {
151+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
152+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
153+
154+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
155+
156+ OpenFeatureAPI
157+ .getInstance ()
158+ .getClient ().track ("metric-key" , evaluationContext );
159+
160+ verify (mockedLdClient ).track (
161+ "metric-key" ,
162+ evaluationContextConverter .toLdContext (evaluationContext ));
163+ }
164+
165+ @ Test
166+ public void itCanTrackEmptyTrackingEventDetails () {
167+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
168+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
169+
170+ TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails (null );
171+
172+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
173+
174+ OpenFeatureAPI
175+ .getInstance ()
176+ .getClient ().track ("metric-key" , evaluationContext , trackingEventDetails );
177+
178+ verify (mockedLdClient ).track (
179+ "metric-key" ,
180+ evaluationContextConverter .toLdContext (evaluationContext ));
181+ }
182+
183+ @ Test
184+ public void itCanTrackTrackingEventDetailsWithNoValue () {
185+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
186+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
187+ ValueConverter valueConverter = new ValueConverter (null );
188+
189+ TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails (null ).add ("currency" , "USD" );
190+
191+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
192+
193+ OpenFeatureAPI
194+ .getInstance ()
195+ .getClient ().track ("metric-key" , evaluationContext , trackingEventDetails );
196+
197+ verify (mockedLdClient ).trackData (
198+ "metric-key" ,
199+ evaluationContextConverter .toLdContext (evaluationContext ),
200+ valueConverter .toLdValue (new Value (trackingEventDetails )));
201+ }
202+
203+ @ Test
204+ public void itCanTrackFullTrackingEventDetails () {
205+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
206+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
207+ ValueConverter valueConverter = new ValueConverter (null );
208+
209+ TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails (99.77 ).add ("currency" , "USD" );
210+
211+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
212+
213+ OpenFeatureAPI
214+ .getInstance ()
215+ .getClient ().track ("metric-key" , evaluationContext , trackingEventDetails );
216+
217+ verify (mockedLdClient ).trackMetric (
218+ "metric-key" ,
219+ evaluationContextConverter .toLdContext (evaluationContext ),
220+ valueConverter .toLdValue (new Value (trackingEventDetails )),
221+ 99.77 );
222+ }
129223}
0 commit comments