Spaces:
Running
Running
| import pytest | |
| from dataset.problem_20.buggy import analyze_user_activity | |
| def test_analyze_user_activity(): | |
| logs = [ | |
| {'user_id': 'u1', 'timestamp': '2023-10-01 10:00:00', 'action': 'login', 'duration_seconds': 120}, | |
| {'user_id': 'u1', 'timestamp': '2023-10-02 11:00:00', 'action': 'view', 'duration_seconds': 300}, | |
| {'user_id': 'u2', 'timestamp': '2023-09-20 09:00:00', 'action': 'login', 'duration_seconds': 60}, | |
| {'user_id': 'u2', 'timestamp': '2023-10-05 14:00:00', 'action': 'view', 'duration_seconds': 150}, | |
| {'user_id': 'u3', 'timestamp': '2023-10-06 16:00:00', 'action': 'view', 'duration_seconds': 200} | |
| ] | |
| current_date = '2023-10-07' | |
| result = analyze_user_activity(logs, current_date) | |
| # Active users last 7 days: 2023-10-01 to 2023-10-07 | |
| # u1 (Oct 1, Oct 2), u2 (Oct 5), u3 (Oct 6) | |
| # Expected: 3 | |
| assert result['active_users_last_7_days'] == 3 | |
| # Most common action | |
| # login: 2, view: 3 -> 'view' | |
| assert result['most_common_action'] == 'view' | |
| # Average session duration | |
| # Total = 120 + 300 + 60 + 150 + 200 = 830 | |
| # Count = 5 -> 830 / 5 = 166.0 | |
| assert result['average_session_duration'] == 166.0 | |
| # Engagement scores (duration / days active) | |
| # u1: duration = 420, days = 2 -> 210.0 | |
| # u2: duration = 210, days = 2 -> 105.0 | |
| # u3: duration = 200, days = 1 -> 200.0 | |
| scores = result['user_engagement_scores'] | |
| assert scores['u1'] == 210.0 | |
| assert scores['u2'] == 105.0 | |
| assert scores['u3'] == 200.0 | |
| def test_empty_logs(): | |
| result = analyze_user_activity([], '2023-10-07') | |
| assert result['active_users_last_7_days'] == 0 | |
| assert result['most_common_action'] is None | |
| assert result['average_session_duration'] == 0.0 | |
| assert result['user_engagement_scores'] == {} | |