From f120bcd3868291ab9813bbc2dd520c6633280712 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 26 Aug 2023 16:21:47 +0200 Subject: [PATCH 1/4] Update GuildBan object --- src/types/entities/guild.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/types/entities/guild.rs b/src/types/entities/guild.rs index b6f3cd4..93b13fc 100644 --- a/src/types/entities/guild.rs +++ b/src/types/entities/guild.rs @@ -16,6 +16,8 @@ use crate::types::{ }; use bitflags::bitflags; +use super::PublicUser; + /// See #[derive(Serialize, Deserialize, Debug, Default, Clone, Updateable, Composite)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] @@ -106,8 +108,7 @@ pub struct Guild { #[derive(Serialize, Deserialize, Debug, Default, Clone, PartialEq, Eq)] #[cfg_attr(feature = "sqlx", derive(sqlx::FromRow))] pub struct GuildBan { - pub user_id: Snowflake, - pub guild_id: Snowflake, + pub user: PublicUser, pub reason: Option, } From 116f1312e70a58699cf5fe3f13087bdd09f505cb Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 26 Aug 2023 16:22:18 +0200 Subject: [PATCH 2/4] Disambiguate function name --- src/api/guilds/guilds.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/guilds/guilds.rs b/src/api/guilds/guilds.rs index 0d66686..4634c9c 100644 --- a/src/api/guilds/guilds.rs +++ b/src/api/guilds/guilds.rs @@ -360,7 +360,7 @@ impl Guild { /// /// # Reference: /// See - pub async fn modify_member_profile( + pub async fn modify_current_member_profile( guild_id: Snowflake, schema: ModifyGuildMemberProfileSchema, user: &mut ChorusUser, From c53ec5341236225127662d0a65c978b518878e00 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 26 Aug 2023 16:22:47 +0200 Subject: [PATCH 3/4] Add kick member spell --- tests/guilds.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/guilds.rs b/tests/guilds.rs index c87e68d..d7e2699 100644 --- a/tests/guilds.rs +++ b/tests/guilds.rs @@ -85,3 +85,28 @@ async fn modify_guild() { assert_eq!(result.name.unwrap(), "Mycoolguild".to_string()); common::teardown(bundle).await } + +#[tokio::test] +async fn guild_remove_member() { + let mut bundle = common::setup().await; + let channel = bundle.channel.read().unwrap().clone(); + let mut other_user = bundle.create_user("testuser1312").await; + let user = &mut bundle.user; + let create_channel_invite_schema = CreateChannelInviteSchema::default(); + let guild = bundle.guild.read().unwrap().clone(); + let invite = user + .create_channel_invite(create_channel_invite_schema, channel.id) + .await + .unwrap(); + other_user.accept_invite(&invite.code, None).await.unwrap(); + let other_user_id = other_user.object.read().unwrap().id; + Guild::remove_member(guild.id, other_user_id, None, &mut bundle.user) + .await + .unwrap(); + assert!( + Guild::remove_member(guild.id, other_user_id, None, &mut bundle.user,) + .await + .is_err() + ); + common::teardown(bundle).await +} From aee50036a0c38ad32e5c74817431cc37c79a9ce4 Mon Sep 17 00:00:00 2001 From: bitfl0wer Date: Sat, 26 Aug 2023 16:54:24 +0200 Subject: [PATCH 4/4] Add delete_role + test --- src/api/guilds/roles.rs | 29 +++++++++++++++++++++++++++++ tests/roles.rs | 21 +++++++++++++++++++-- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/api/guilds/roles.rs b/src/api/guilds/roles.rs index eb837c9..02994f9 100644 --- a/src/api/guilds/roles.rs +++ b/src/api/guilds/roles.rs @@ -160,4 +160,33 @@ impl types::RoleObject { .deserialize_response::(user) .await } + + /// Deletes a guild role. Requires the `MANAGE_ROLES` permission. Returns a 204 empty response on success. + /// + /// # Reference: + /// See + pub async fn delete_role( + user: &mut ChorusUser, + guild_id: Snowflake, + role_id: Snowflake, + audit_log_reason: Option, + ) -> ChorusResult<()> { + let url = format!( + "{}/guilds/{}/roles/{}", + user.belongs_to.borrow_mut().urls.api, + guild_id, + role_id + ); + + let request = ChorusRequest::new( + http::Method::DELETE, + &url, + None, + audit_log_reason.as_deref(), + None, + Some(user), + LimitType::Guild(guild_id), + ); + request.handle_request_as_result(user).await + } } diff --git a/tests/roles.rs b/tests/roles.rs index 7876e5d..8691138 100644 --- a/tests/roles.rs +++ b/tests/roles.rs @@ -1,4 +1,4 @@ -use chorus::types::{self, RoleCreateModifySchema}; +use chorus::types::{self, RoleCreateModifySchema, RoleObject}; mod common; @@ -32,7 +32,7 @@ async fn create_and_get_roles() { } #[tokio::test] -async fn get_singular_role() { +async fn get_and_delete_role() { let mut bundle = common::setup().await; let guild_id = bundle.guild.read().unwrap().id; let role_id = bundle.role.read().unwrap().id; @@ -41,5 +41,22 @@ async fn get_singular_role() { .await .unwrap(); assert_eq!(role, same_role); + assert_eq!( + chorus::types::RoleObject::get_all(&mut bundle.user, guild_id) + .await + .unwrap() + .len(), + 2 + ); + RoleObject::delete_role(&mut bundle.user, guild_id, role_id, None) + .await + .unwrap(); + assert_eq!( + chorus::types::RoleObject::get_all(&mut bundle.user, guild_id) + .await + .unwrap() + .len(), + 1 + ); common::teardown(bundle).await }