@@ -90,6 +90,13 @@ def _validate_last_impressions(self, client, *to_validate):
9090 as_tup_set = set ((i .feature_name , i .matching_key , i .treatment ) for i in impressions )
9191 assert as_tup_set == set (to_validate )
9292
93+ def _validate_last_events (self , client , * to_validate ):
94+ """Validate the last N impressions are present disregarding the order."""
95+ event_storage = client ._factory ._get_storage ('events' )
96+ events = event_storage .pop_many (len (to_validate ))
97+ as_tup_set = set ((i .key , i .traffic_type_name , i .event_type_id , i .value , str (i .properties )) for i in events )
98+ assert as_tup_set == set (to_validate )
99+
93100 def test_get_treatment (self ):
94101 """Test client.get_treatment()."""
95102 try :
@@ -275,10 +282,14 @@ def test_track(self):
275282 client = self .factory .client ()
276283 except :
277284 pass
278- assert (client .track ('user1' , 'user' , 'conversion' ))
285+ assert (client .track ('user1' , 'user' , 'conversion' , 1 , { "prop1" : "value1" } ))
279286 assert (not client .track (None , 'user' , 'conversion' ))
280287 assert (not client .track ('user1' , None , 'conversion' ))
281288 assert (not client .track ('user1' , 'user' , None ))
289+ self ._validate_last_events (
290+ client ,
291+ ('user1' , 'user' , 'conversion' , 1 , "{'prop1': 'value1'}" )
292+ )
282293
283294 def test_manager_methods (self ):
284295 """Test manager.split/splits."""
@@ -369,6 +380,13 @@ def _validate_last_impressions(self, client, *to_validate):
369380 as_tup_set = set ((i .feature_name , i .matching_key , i .treatment ) for i in impressions )
370381 assert as_tup_set == set (to_validate )
371382
383+ def _validate_last_events (self , client , * to_validate ):
384+ """Validate the last N impressions are present disregarding the order."""
385+ event_storage = client ._factory ._get_storage ('events' )
386+ events = event_storage .pop_many (len (to_validate ))
387+ as_tup_set = set ((i .key , i .traffic_type_name , i .event_type_id , i .value , str (i .properties )) for i in events )
388+ assert as_tup_set == set (to_validate )
389+
372390 def test_get_treatment (self ):
373391 """Test client.get_treatment()."""
374392 client = self .factory .client ()
@@ -543,10 +561,14 @@ def test_manager_methods(self):
543561 def test_track (self ):
544562 """Test client.track()."""
545563 client = self .factory .client ()
546- assert (client .track ('user1' , 'user' , 'conversion' ))
564+ assert (client .track ('user1' , 'user' , 'conversion' , 1 , { "prop1" : "value1" } ))
547565 assert (not client .track (None , 'user' , 'conversion' ))
548566 assert (not client .track ('user1' , None , 'conversion' ))
549567 assert (not client .track ('user1' , 'user' , None ))
568+ self ._validate_last_events (
569+ client ,
570+ ('user1' , 'user' , 'conversion' , 1 , "{'prop1': 'value1'}" )
571+ )
550572
551573class RedisIntegrationTests (object ):
552574 """Redis storage-based integration tests."""
@@ -599,6 +621,20 @@ def setup_method(self):
599621 telemetry_init_producer = telemetry_producer .get_telemetry_init_producer (),
600622 ) # pylint:disable=attribute-defined-outside-init
601623
624+ def _validate_last_events (self , client , * to_validate ):
625+ """Validate the last N impressions are present disregarding the order."""
626+ event_storage = client ._factory ._get_storage ('events' )
627+ redis_client = event_storage ._redis
628+ events_raw = [
629+ json .loads (redis_client .lpop (event_storage ._EVENTS_KEY_TEMPLATE ))
630+ for _ in to_validate
631+ ]
632+ as_tup_set = set (
633+ (i ['e' ]['key' ], i ['e' ]['trafficTypeName' ], i ['e' ]['eventTypeId' ], i ['e' ]['value' ], str (i ['e' ]['properties' ]))
634+ for i in events_raw
635+ )
636+ assert as_tup_set == set (to_validate )
637+
602638 def _validate_last_impressions (self , client , * to_validate ):
603639 """Validate the last N impressions are present disregarding the order."""
604640 imp_storage = client ._factory ._get_storage ('impressions' )
@@ -786,10 +822,14 @@ def test_get_treatments_with_config(self):
786822 def test_track (self ):
787823 """Test client.track()."""
788824 client = self .factory .client ()
789- assert (client .track ('user1' , 'user' , 'conversion' ))
825+ assert (client .track ('user1' , 'user' , 'conversion' , 1 , { "prop1" : "value1" } ))
790826 assert (not client .track (None , 'user' , 'conversion' ))
791827 assert (not client .track ('user1' , None , 'conversion' ))
792828 assert (not client .track ('user1' , 'user' , None ))
829+ self ._validate_last_events (
830+ client ,
831+ ('user1' , 'user' , 'conversion' , 1 , "{'prop1': 'value1'}" )
832+ )
793833
794834 def test_manager_methods (self ):
795835 """Test manager.split/splits."""
0 commit comments