@@ -177,4 +177,42 @@ describe('client tests', () => {
177177 expect ( details . variant ) . toBeUndefined ( ) ;
178178 } ) ;
179179
180- } )
180+ test ( 'track: throws when missing eventName' , async ( ) => {
181+ try {
182+ await client . track ( "" , { targetingKey : "u1" , trafficType : "user" } , { } ) ;
183+ } catch ( e ) {
184+ expect ( e . message ) . toBe ( "Missing eventName, required to track" ) ;
185+ expect ( e . code ) . toBe ( "PARSE_ERROR" ) ;
186+ }
187+ } ) ;
188+
189+ test ( 'track: throws when missing targetingKey' , async ( ) => {
190+ try {
191+ await client . track ( "my-event" , { trafficType : "user" } , { } ) ;
192+ } catch ( e ) {
193+ expect ( e . message ) . toBe ( "Missing targetingKey, required to track" ) ;
194+ expect ( e . code ) . toBe ( "PARSE_ERROR" ) ;
195+ }
196+ } ) ;
197+
198+ test ( 'track: throws when missing trafficType' , async ( ) => {
199+ try {
200+ await client . track ( "my-event" , { targetingKey : "u1" } , { } ) ;
201+ } catch ( e ) {
202+ expect ( e . message ) . toBe ( "Missing trafficType variable, required to track" ) ;
203+ expect ( e . code ) . toBe ( "INVALID_CONTEXT" ) ;
204+ }
205+ } ) ;
206+
207+ test ( 'track: without value' , async ( ) => {
208+ const trackSpy = jest . spyOn ( splitClient , 'track' ) ;
209+ await client . track ( "my-event" , { targetingKey : "u1" , trafficType : "user" } , { properties : { prop1 : "value1" } } ) ;
210+ expect ( trackSpy ) . toHaveBeenCalledWith ( "u1" , "user" , "my-event" , undefined , { prop1 : "value1" } ) ;
211+ } ) ;
212+
213+ test ( 'track: with value' , async ( ) => {
214+ const trackSpy = jest . spyOn ( splitClient , 'track' ) ;
215+ await client . track ( "my-event" , { targetingKey : "u1" , trafficType : "user" } , { value : 9.99 , properties : { prop1 : "value1" } } ) ;
216+ expect ( trackSpy ) . toHaveBeenCalledWith ( "u1" , "user" , "my-event" , 9.99 , { prop1 : "value1" } ) ;
217+ } ) ;
218+ } ) ;
0 commit comments