Skip to content

Commit 0121c27

Browse files
committed
updated track tests
1 parent 23a28dd commit 0121c27

File tree

1 file changed

+43
-3
lines changed

1 file changed

+43
-3
lines changed

tests/integration/test_client_e2e.py

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

551573
class 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

Comments
 (0)