Skip to content

Commit c467f40

Browse files
committed
start coverage for guilds
1 parent d3ce28e commit c467f40

File tree

1 file changed

+255
-1
lines changed

1 file changed

+255
-1
lines changed

tests/http/test_guild.py

Lines changed: 255 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,44 @@
2121
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
2222
DEALINGS IN THE SOFTWARE.
2323
"""
24+
from random import choice, randint, randrange, sample
25+
from typing import get_args
26+
2427
import pytest
2528

2629
from discord import Route
27-
from discord.ext.testing.fixtures import after, before, guild_id, icon, limit, name
30+
from discord.ext.testing.fixtures import (
31+
after,
32+
before,
33+
channel_id,
34+
guild_id,
35+
icon,
36+
limit,
37+
name,
38+
reason,
39+
user_id,
40+
)
41+
from discord.ext.testing.helpers import (
42+
random_bool,
43+
random_bytes,
44+
random_snowflake,
45+
random_string,
46+
)
47+
from discord.types.guild import GuildFeature
2848

2949
from ..core import client
3050

3151

52+
@pytest.fixture()
53+
def code():
54+
return random_string(10)
55+
56+
57+
@pytest.fixture()
58+
def description():
59+
return random_string(100)
60+
61+
3262
async def test_get_guilds(client, limit, before, after):
3363
params = {"limit": limit}
3464
if before:
@@ -69,3 +99,227 @@ async def test_create_guild(client, name, icon):
6999
payload["icon"] = icon
70100
with client.makes_request(Route("POST", "/guilds"), json=payload):
71101
await client.http.create_guild(name, icon)
102+
103+
104+
@pytest.mark.parametrize(
105+
"channel_id1,channel_id2, channel_id3",
106+
((random_snowflake(), random_snowflake(), random_snowflake()),),
107+
)
108+
@pytest.mark.parametrize("premium_progress_bar_enabled", (True, False))
109+
@pytest.mark.parametrize("verification_level", (randint(0, 4),))
110+
@pytest.mark.parametrize("default_message_notifications", (randint(0, 1),))
111+
@pytest.mark.parametrize("explicit_content_filter", (randint(0, 2),))
112+
@pytest.mark.parametrize("splash", (random_bytes(),))
113+
@pytest.mark.parametrize("discovery_splash", (random_bytes(),))
114+
@pytest.mark.parametrize("banner", (random_bytes(),))
115+
@pytest.mark.parametrize("system_channel_flags", (randint(0, 1 << 4),))
116+
@pytest.mark.parametrize("preferred_locale", (random_string(5),))
117+
@pytest.mark.parametrize(
118+
"features",
119+
(sample(get_args(GuildFeature), randint(0, len(get_args(GuildFeature)))),),
120+
)
121+
@pytest.mark.parametrize("afk_timeout", (choice((60, 300, 900, 1800, 3600)),))
122+
async def test_edit_guild(
123+
client,
124+
name,
125+
verification_level,
126+
default_message_notifications,
127+
explicit_content_filter,
128+
channel_id3,
129+
afk_timeout,
130+
icon,
131+
user_id,
132+
splash,
133+
discovery_splash,
134+
banner,
135+
channel_id,
136+
system_channel_flags,
137+
channel_id1,
138+
channel_id2,
139+
preferred_locale,
140+
features,
141+
description,
142+
premium_progress_bar_enabled,
143+
reason,
144+
):
145+
payload = {
146+
"name": name,
147+
"verification_level": verification_level,
148+
"default_message_notifications": default_message_notifications,
149+
"explicit_content_filter": explicit_content_filter,
150+
"afk_channel_id": channel_id3,
151+
"afk_timeout": afk_timeout,
152+
"icon": icon,
153+
"owner_id": user_id,
154+
"splash": splash,
155+
"discovery_splash": discovery_splash,
156+
"banner": banner,
157+
"system_channel_id": channel_id,
158+
"system_channel_flags": system_channel_flags,
159+
"rules_channel_id": channel_id1,
160+
"public_updates_channel_id": channel_id2,
161+
"preferred_locale": preferred_locale,
162+
"features": features,
163+
"description": description,
164+
"premium_progress_bar_enabled": premium_progress_bar_enabled,
165+
}
166+
with client.makes_request(
167+
Route("PATCH", "/guilds/{guild_id}", guild_id=guild_id),
168+
json=payload,
169+
reason=reason,
170+
):
171+
await client.http.edit_guild(
172+
guild_id,
173+
reason=reason,
174+
**payload,
175+
)
176+
177+
178+
@pytest.mark.parametrize("required", [random_bool()])
179+
async def test_edit_guild_mfa(client, guild_id, required, reason):
180+
payload = {"level": int(required)}
181+
with client.makes_request(
182+
Route("POST", "/guilds/{guild_id}/mfa", guild_id=guild_id),
183+
json=payload,
184+
reason=reason,
185+
):
186+
await client.http.edit_guild_mfa(
187+
guild_id,
188+
required,
189+
reason=reason,
190+
)
191+
192+
193+
async def test_get_template(client, code):
194+
with client.makes_request(Route("GET", "/guilds/templates/{code}", code=code)):
195+
await client.http.get_template(code)
196+
197+
198+
async def test_guild_templates(client, guild_id):
199+
with client.makes_request(
200+
Route("GET", "/guilds/{guild_id}/templates", guild_id=guild_id)
201+
):
202+
await client.http.guild_templates(guild_id)
203+
204+
205+
async def test_create_template(client, guild_id, name, icon):
206+
payload = {"name": name, "icon": icon}
207+
with client.makes_request(
208+
Route("POST", "/guilds/{guild_id}/templates", guild_id=guild_id),
209+
json=payload,
210+
):
211+
await client.http.create_template(guild_id, payload)
212+
213+
214+
async def test_sync_template(client, guild_id, code):
215+
with client.makes_request(
216+
Route(
217+
"PUT", "/guilds/{guild_id}/templates/{code}", guild_id=guild_id, code=code
218+
)
219+
):
220+
await client.http.sync_template(guild_id, code)
221+
222+
223+
async def test_edit_template(client, guild_id, code, name, description):
224+
payload = {"name": name, "description": description}
225+
with client.makes_request(
226+
Route(
227+
"PATCH", "/guilds/{guild_id}/templates/{code}", guild_id=guild_id, code=code
228+
),
229+
json=payload,
230+
):
231+
await client.http.edit_template(guild_id, code, payload)
232+
233+
234+
async def test_delete_template(client, guild_id, code):
235+
with client.makes_request(
236+
Route(
237+
"DELETE",
238+
"/guilds/{guild_id}/templates/{code}",
239+
guild_id=guild_id,
240+
code=code,
241+
)
242+
):
243+
await client.http.delete_template(guild_id, code)
244+
245+
246+
async def test_create_from_template(client, code, name, icon):
247+
payload = {"name": name}
248+
if icon is not None:
249+
payload["icon"] = icon
250+
with client.makes_request(
251+
Route("POST", "/guilds/templates/{code}", code=code), json=payload
252+
):
253+
await client.http.create_from_template(code, name, icon)
254+
255+
256+
@pytest.mark.parametrize("limit", [None, randrange(0, 1000)])
257+
async def test_get_bans(client, guild_id, limit, before, after):
258+
params = {}
259+
if limit is not None:
260+
params["limit"] = limit
261+
if before is not None:
262+
params["before"] = before
263+
if after is not None:
264+
params["after"] = after
265+
with client.makes_request(
266+
Route("GET", "/guilds/{guild_id}/bans", guild_id=guild_id), params=params
267+
):
268+
await client.http.get_bans(guild_id, limit=limit, before=before, after=after)
269+
270+
271+
async def test_get_ban(client, guild_id, user_id):
272+
with client.makes_request(
273+
Route(
274+
"GET",
275+
"/guilds/{guild_id}/bans/{user_id}",
276+
guild_id=guild_id,
277+
user_id=user_id,
278+
)
279+
):
280+
await client.http.get_ban(user_id, guild_id)
281+
282+
283+
async def test_get_vanity_code(client, guild_id):
284+
with client.makes_request(
285+
Route("GET", "/guilds/{guild_id}/vanity-url", guild_id=guild_id)
286+
):
287+
await client.http.get_vanity_code(guild_id)
288+
289+
290+
async def test_change_vanity_code(client, guild_id, code, reason):
291+
with client.makes_request(
292+
Route("PATCH", "/guilds/{guild_id}/vanity-url", guild_id=guild_id),
293+
json={"code": code},
294+
reason=reason,
295+
):
296+
await client.http.change_vanity_code(guild_id, code, reason=reason)
297+
298+
299+
async def test_get_all_guild_channels(client, guild_id):
300+
with client.makes_request(
301+
Route("GET", "/guilds/{guild_id}/channels", guild_id=guild_id)
302+
):
303+
await client.http.get_all_guild_channels(guild_id)
304+
305+
306+
async def test_get_members(client, guild_id, limit, after):
307+
payload = {"limit": limit}
308+
if after is not None:
309+
payload["after"] = after
310+
with client.makes_request(
311+
Route("GET", "/guilds/{guild_id}/members", guild_id=guild_id), params=payload
312+
):
313+
await client.http.get_members(guild_id, limit=limit, after=after)
314+
315+
316+
async def test_get_member(client, guild_id, user_id):
317+
with client.makes_request(
318+
Route(
319+
"GET",
320+
"/guilds/{guild_id}/members/{member_id}",
321+
guild_id=guild_id,
322+
member_id=user_id,
323+
)
324+
):
325+
await client.http.get_member(guild_id, user_id)

0 commit comments

Comments
 (0)