1
# SPDX-License-Identifier: MIT
3
from typing import TYPE_CHECKING
7
from disnake import activity as _activity
10
from disnake.types.activity import ActivityAssets
15
return _activity.Activity()
20
return _activity.Game(name="Celeste")
25
return _activity.CustomActivity(name="custom")
30
return _activity.Streaming(name="me", url="https://disnake.dev")
35
return _activity.Spotify()
38
@pytest.fixture(params=["activity", "game", "custom_activity", "streaming", "spotify"])
39
def any_activity(request):
40
return request.getfixturevalue(request.param)
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
50
def test_text(self, any_activity: _activity.ActivityTypes) -> None:
51
assets: ActivityAssets = {"large_text": "hi", "small_text": "hello"}
52
any_activity.assets = assets
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"
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",
64
any_activity.assets = assets
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"
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
73
assert any_activity.large_image_url is None
74
assert any_activity.small_image_url is None
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
80
assert any_activity.large_image_url is None
81
assert any_activity.small_image_url is None
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
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"
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