diff options
Diffstat (limited to 'tests/managers/test_events.py')
| -rw-r--r-- | tests/managers/test_events.py | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/tests/managers/test_events.py b/tests/managers/test_events.py index e256876..5ebd015 100644 --- a/tests/managers/test_events.py +++ b/tests/managers/test_events.py @@ -19,6 +19,7 @@ from generalresearch.models.events import ( MessageKind, ) from generalresearch.models.legacy.bucket import Bucket +from generalresearch.models.thl import Product from generalresearch.models.thl.definitions import Status, StatusCode1 from generalresearch.models.thl.session import Session, Wall from generalresearch.models.thl.user import User @@ -41,7 +42,6 @@ def event_subscriber(thl_redis_config: RedisConfig, product_id: str) -> EventSub class TestActiveUsers: - def test_run_empty(self, event_manager: EventManager, product_id: str): res = event_manager.get_user_stats(product_id) assert res == { @@ -54,7 +54,7 @@ class TestActiveUsers: def test_run( self, event_manager: EventManager, - product_id: str, + product_factory, user_factory: Callable[..., User], ): event_manager.clear_global_user_stats() @@ -65,7 +65,7 @@ class TestActiveUsers: event_manager.handle_user(user1) event_manager.handle_user(user1) - res = event_manager.get_user_stats(product_id) + res = event_manager.get_user_stats(user1.product_id) assert res == { "active_users_last_1h": 1, "active_users_last_24h": 1, @@ -81,8 +81,8 @@ class TestActiveUsers: } # Create a 2nd user in another product - product_id2 = uuid4().hex - user2: User = user_factory(product_id=product_id2) + product2 = product_factory() + user2: User = user_factory(product=product2) assert isinstance(user2, User) assert isinstance(user2.created, datetime) # Change to say user was created >24 hrs ago @@ -90,14 +90,14 @@ class TestActiveUsers: event_manager.handle_user(user2) # And now each have 1 active user - assert event_manager.get_user_stats(product_id) == { + assert event_manager.get_user_stats(user1.product_id) == { "active_users_last_1h": 1, "active_users_last_24h": 1, "signups_last_24h": 1, "in_progress_users": 0, } # user2 was created older than 24hrs ago - assert event_manager.get_user_stats(product_id2) == { + assert event_manager.get_user_stats(user2.product_id) == { "active_users_last_1h": 1, "active_users_last_24h": 1, "signups_last_24h": 0, @@ -113,13 +113,14 @@ class TestActiveUsers: def test_inprogress( self, - event_manager: EventSubscriber, - product_id: str, + event_manager: EventManager, user_factory: Callable[..., User], + product ): event_manager.clear_global_user_stats() - user1: User = user_factory() - user2: User = user_factory() + user1: User = user_factory(product=product) + user2: User = user_factory(product=product) + product_id = product.id # No matter how many times we do this, they're only active once event_manager.mark_user_inprogress(user1) @@ -142,11 +143,11 @@ class TestActiveUsers: def test_expiry( self, event_manager: EventManager, - product_id: str, user_factory: Callable[..., User], ): event_manager.clear_global_user_stats() user1: User = user_factory() + product_id = user1.product_id event_manager.handle_user(user1) event_manager.mark_user_inprogress(user1) sec_24hr = timedelta(hours=24).total_seconds() @@ -171,7 +172,6 @@ class TestActiveUsers: class TestSessionStats: - def test_run_empty(self, event_manager: EventManager, product_id: str): res = event_manager.get_session_stats(product_id) assert res == { @@ -194,14 +194,15 @@ class TestSessionStats: def test_run( self, event_manager: EventManager, - product_id: str, + product_factory: Callable[..., Product], user_factory: Callable[..., User], utc_now: datetime, utc_hour_ago: datetime, ): event_manager.clear_global_session_stats() - - user: User = user_factory() + product = product_factory() + product_id = product.id + user: User = user_factory(product=product) session = Session( country_iso="us", started=utc_hour_ago + timedelta(minutes=10), @@ -278,29 +279,29 @@ class TestSessionStats: field_name = str(field) assert res == {field_name: "1"} assert ( - 3600 - 60 < event_manager.redis_client.httl(name, field_name)[0] < 3600 + 60 + 3600 - 61 < event_manager.redis_client.httl(name, field_name)[0] < 3600 + 60 ) # Second BP, fail - product_id2 = uuid4().hex - user2: User = user_factory(product_id=product_id2) + product2 = product_factory() + user2: User = user_factory(product=product2) session3 = Session( country_iso="us", started=utc_now - timedelta(minutes=1), user=user2, ) - event_manager.session_on_enter(session=session3, user=user) + event_manager.session_on_enter(session=session3, user=user2) session3.update( finished=utc_now, status=Status.FAIL, status_code_1=StatusCode1.BUYER_FAIL, ) - event_manager.session_on_finish(session=session3, user=user) + event_manager.session_on_finish(session=session3, user=user2) avg_loi_complete = ( round(session.elapsed.total_seconds()) + round(session2.elapsed.total_seconds()) ) / 2 - assert event_manager.get_session_stats(product_id) == { + assert event_manager.get_global_session_stats() == { "session_enters_last_1h": 2, "session_enters_last_24h": 3, "session_fails_last_1h": 1, @@ -456,6 +457,7 @@ class TestTaskStatsManager: class TestChannelsSubscriptions: + @pytest.mark.skip("sits there doing nothing forever? todo") def test_stats_worker( self, event_manager: EventManager, |
