disnake

Форк
0
/
test_activity.py 
97 строк · 3.3 Кб
1
# SPDX-License-Identifier: MIT
2

3
from typing import TYPE_CHECKING
4

5
import pytest
6

7
from disnake import activity as _activity
8

9
if TYPE_CHECKING:
10
    from disnake.types.activity import ActivityAssets
11

12

13
@pytest.fixture
14
def activity():
15
    return _activity.Activity()
16

17

18
@pytest.fixture
19
def game():
20
    return _activity.Game(name="Celeste")
21

22

23
@pytest.fixture
24
def custom_activity():
25
    return _activity.CustomActivity(name="custom")
26

27

28
@pytest.fixture
29
def streaming():
30
    return _activity.Streaming(name="me", url="https://disnake.dev")
31

32

33
@pytest.fixture
34
def spotify():
35
    return _activity.Spotify()
36

37

38
@pytest.fixture(params=["activity", "game", "custom_activity", "streaming", "spotify"])
39
def any_activity(request):
40
    return request.getfixturevalue(request.param)
41

42

43
class TestAssets:
44
    def test_none(self, any_activity: _activity.ActivityTypes) -> None:
45
        assert any_activity.large_image_url is None
46
        assert any_activity.small_image_url is None
47
        assert any_activity.large_image_text is None
48
        assert any_activity.small_image_text is None
49

50
    def test_text(self, any_activity: _activity.ActivityTypes) -> None:
51
        assets: ActivityAssets = {"large_text": "hi", "small_text": "hello"}
52
        any_activity.assets = assets
53

54
        assert any_activity.large_image_url is None
55
        assert any_activity.small_image_url is None
56
        assert any_activity.large_image_text == "hi"
57
        assert any_activity.small_image_text == "hello"
58

59
    def test_mp(self, any_activity: _activity.ActivityTypes) -> None:
60
        assets: ActivityAssets = {
61
            "large_image": "mp:external/stuff/large",
62
            "small_image": "mp:external/stuff/small",
63
        }
64
        any_activity.assets = assets
65

66
        assert any_activity.large_image_url == "https://media.discordapp.net/external/stuff/large"
67
        assert any_activity.small_image_url == "https://media.discordapp.net/external/stuff/small"
68

69
    def test_unknown_prefix(self, any_activity: _activity.ActivityTypes) -> None:
70
        assets: ActivityAssets = {"large_image": "unknown:a", "small_image": "unknown:b"}
71
        any_activity.assets = assets
72

73
        assert any_activity.large_image_url is None
74
        assert any_activity.small_image_url is None
75

76
    def test_asset_id(self, any_activity: _activity.ActivityTypes) -> None:
77
        assets: ActivityAssets = {"large_image": "1234", "small_image": "5678"}
78
        any_activity.assets = assets
79

80
        assert any_activity.large_image_url is None
81
        assert any_activity.small_image_url is None
82

83
    # test `Activity` with application_id separately;
84
    # without application_id, it should behave like the other types (see previous test)
85
    def test_asset_id_activity(self, activity: _activity.Activity) -> None:
86
        activity.application_id = 1010
87

88
        assets: ActivityAssets = {"large_image": "1234", "small_image": "5678"}
89
        activity.assets = assets
90
        assert activity.large_image_url == "https://cdn.discordapp.com/app-assets/1010/1234.png"
91
        assert activity.small_image_url == "https://cdn.discordapp.com/app-assets/1010/5678.png"
92

93
        # if it's a prefixed asset, it's should return `None` again
94
        assets: ActivityAssets = {"large_image": "unknown:1234", "small_image": "unknown:5678"}
95
        activity.assets = assets
96
        assert activity.large_image_url is None
97
        assert activity.small_image_url is None
98

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.