Passed
Pull Request — master (#7)
by manny
04:09
created

test_media_player.test_bot_chat_message()   A

Complexity

Conditions 1

Size

Total Lines 19
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 16
nop 0
dl 0
loc 19
rs 9.6
c 0
b 0
f 0
1
import asyncio
2
from asyncio.events import get_event_loop
3
from datetime import datetime, timezone
4
import pytest
5
from unittest.mock import Mock
6
7
from models.chat_message import ChatMessage
8
9
from gadgets.media_player import MediaPlayer
10
11
from races_for_testing import get_test_race
12
from users_for_testing import get_test_entrant, get_test_entrants
13
14
15
@pytest.mark.asyncio
16
async def test_entrant_finished_first(random_users):
17
    event_loop = get_event_loop()
18
    event_loop.set_debug(True)
19
20
    play_media = Mock()
21
    media_player = MediaPlayer()
22
    media_file_path = "fake/path/test.mp3"
23
    media_player.play_media_callback = play_media
24
    media_player.add_trigger(
25
        media_file_path, 0)
26
    media_player.monitoring_type = 0
27
    await asyncio.sleep(0.1)
28
29
    assert len(media_player.triggers) == 1
30
    play_media.assert_not_called()
31
32
    entrant = get_test_entrant(
33
        status_value="in_progress", user=next(random_users))
34
    entrants = get_test_entrants(random_users, entrant)
35
    race = get_test_race(entrants=entrants)
36
    media_player.race_updated(race, entrant.user.full_name)
37
    await asyncio.sleep(0.1)
38
    play_media.assert_not_called()
39
40
    entrant = race.get_entrant_by_name(entrant.user.full_name)
41
    await asyncio.sleep(0.1)
42
    entrant.place = 1
43
    entrant.status.value = "finished"
44
    entrant.finish_time = datetime.now(timezone.utc)
45
    media_player.race_updated(race, entrant.user.full_name)
46
    await asyncio.sleep(0.1)
47
    play_media.assert_called_once_with(
48
        media_file_path, 0)
49
50
51
@pytest.mark.asyncio
52
async def test_bot_chat_message():
53
    event_loop = get_event_loop()
54
    event_loop.set_debug(True)
55
    play_media = Mock()
56
    media_player = MediaPlayer()
57
    media_file_path = "fake/path/test.mp3"
58
    media_player.play_media_callback = play_media
59
    media_player.add_chat_trigger(media_file_path, False, True)
60
    media_player.monitoring_type = 0
61
    await asyncio.sleep(0.1)
62
    assert len(media_player.chat_triggers) == 1
63
64
    c = ChatMessage(
65
        "123456", None, None, datetime.now(timezone.utc), " ", " ",
66
        False, False, False
67
    )
68
69
    media_player.chat_updated(c)
70