Example #1
0
    def test_track_playtime_counts_time_between_track_start_and_track_end(
            self):
        session = Session()
        session.add_event(Event('track_start', 50, 'A', '101'))
        session.add_event(Event('track_end', 100, 'A', '101'))

        assert session.track_playtime == 50
Example #2
0
    def test_duration_is_time_between_last_and_first_event(self):
        session = Session()
        session.add_event(Event('track_end', 50, 'A', '101'))
        session.add_event(Event('track_end', 150, 'A', '101'))
        session.add_event(Event('track_end', 100, 'A', '101'))

        assert session.duration == 50
Example #3
0
    def test_last_time_comes_from_last_event(self):
        session = Session()
        session.add_event(Event('track_end', 50, 'A', '101'))
        session.add_event(Event('track_end', 150, 'A', '101'))
        session.add_event(Event('track_end', 100, 'A', '101'))

        assert session.last_time == 100
Example #4
0
    def test_track_playtime_supports_pauses(self):
        session = Session()
        session.add_event(Event('track_start', 50, 'A', '101'))
        session.add_event(Event('pause', 60, 'A', '101'))
        session.add_event(Event('play', 70, 'A', '101'))
        session.add_event(Event('track_end', 100, 'A', '101'))

        assert session.track_playtime == 40
Example #5
0
    def test_get_formatted_output_returns_in_correct_format(self):
        session = Session()
        session.add_event(Event('stream_start', 50, 'A', '101'))
        session.add_event(Event('ad_start', 60, 'A', '101'))
        session.add_event(Event('ad_end', 70, 'A', '101'))
        session.add_event(Event('track_start', 80, 'A', '101'))
        session.add_event(Event('track_heartbeat', 90, 'A', '101'))

        assert session.get_formatted_output() == {
            'user_id': 'A',
            'content_id': '101',
            'session_start': 50,
            'session_end': 90,
            'total_time': 40,
            'track_playtime': 10,
            'event_count': 5,
            'ad_count': 1
        }
Example #6
0
    def test_ad_count_counts_number_of_ad_starts(self):
        session = Session()
        session.add_event(Event('ad_start', 50, 'A', '101'))
        session.add_event(Event('ad_start', 50, 'A', '101'))
        session.add_event(Event('ad_end', 50, 'A', '101'))
        session.add_event(Event('ad_start', 50, 'A', '101'))

        assert session.ad_count == 3
Example #7
0
    def test_track_playtime_supports_paused_heartbeated_unfinished_sessions(
            self):
        session = Session()
        session.add_event(Event('track_start', 50, 'A', '101'))
        session.add_event(Event('pause', 60, 'A', '101'))
        session.add_event(Event('track_heartbeat', 70, 'A', '101'))

        assert session.track_playtime == 10
Example #8
0
    def test_is_expired_is_true_60_seconds_after_last_event(self):
        session = Session()
        session.add_event(Event('ad_start', 50, 'A', '101'))

        assert session.is_expired(50 + 60)
Example #9
0
    def test_is_expired_is_false_59_seconds_after_last_event(self):
        session = Session()
        session.add_event(Event('ad_start', 50, 'A', '101'))

        assert not session.is_expired(50 + 59)
Example #10
0
    def test_track_playtime_works_without_track_end(self):
        session = Session()
        session.add_event(Event('track_start', 50, 'A', '101'))
        session.add_event(Event('track_heartbeat', 60, 'A', '101'))

        assert session.track_playtime == 10
Example #11
0
    def test_session_id_comes_from_first_event(self):
        session = Session()
        session.add_event(Event('track_end', 100, 'A', '101'))
        session.add_event(Event('track_end', 100, 'B', '101'))

        assert session.session_id == ('A', '101')