@@ -126,4 +126,79 @@ public void itCanDoAValueEvaluation() {
126126 assertEquals ("84" , detailed .getVariant ());
127127 assertEquals ("TARGETING_MATCH" , detailed .getReason ());
128128 }
129+
130+ @ Test
131+ public void itCanTrackNoTrackingEventDetails () {
132+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
133+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
134+
135+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
136+
137+ OpenFeatureAPI
138+ .getInstance ()
139+ .getClient ().track ("metric-key" , evaluationContext );
140+
141+ verify (mockedLdClient ).track (
142+ "metric-key" ,
143+ evaluationContextConverter .toLdContext (evaluationContext ));
144+ }
145+
146+ @ Test
147+ public void itCanTrackEmptyTrackingEventDetails () {
148+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
149+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
150+
151+ TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails (null );
152+
153+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
154+
155+ OpenFeatureAPI
156+ .getInstance ()
157+ .getClient ().track ("metric-key" , evaluationContext , trackingEventDetails );
158+
159+ verify (mockedLdClient ).track (
160+ "metric-key" ,
161+ evaluationContextConverter .toLdContext (evaluationContext ));
162+ }
163+
164+ @ Test
165+ public void itCanTrackTrackingEventDetailsWithNoValue () {
166+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
167+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
168+ ValueConverter valueConverter = new ValueConverter (null );
169+
170+ TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails (null ).add ("currency" , "USD" );
171+
172+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
173+
174+ OpenFeatureAPI
175+ .getInstance ()
176+ .getClient ().track ("metric-key" , evaluationContext , trackingEventDetails );
177+
178+ verify (mockedLdClient ).trackData (
179+ "metric-key" ,
180+ evaluationContextConverter .toLdContext (evaluationContext ),
181+ valueConverter .toLdValue (new Value (trackingEventDetails )));
182+ }
183+
184+ @ Test
185+ public void itCanTrackFullTrackingEventDetails () {
186+ EvaluationContext evaluationContext = new ImmutableContext ("user-key" );
187+ EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter (null );
188+ ValueConverter valueConverter = new ValueConverter (null );
189+
190+ TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails (99.77 ).add ("currency" , "USD" );
191+
192+ OpenFeatureAPI .getInstance ().setProvider (ldProvider );
193+
194+ OpenFeatureAPI
195+ .getInstance ()
196+ .getClient ().track ("metric-key" , evaluationContext , trackingEventDetails );
197+
198+ verify (mockedLdClient ).trackMetric (
199+ "metric-key" ,
200+ evaluationContextConverter .toLdContext (evaluationContext ),
201+ valueConverter .toLdValue (new Value (trackingEventDetails )),
202+ 99.77 );
203+ }
129204}
0 commit comments