mod common;
use common::setup;
use refluxer::http::endpoints::guilds::ModifyCurrentMember;
#[tokio::test]
async fn test_get_guild() {
let (http, guild_id) = setup();
let guild = http.get_guild(guild_id).await.expect("get_guild failed");
assert_eq!(guild.id, guild_id);
assert!(!guild.name.is_empty(), "guild should have a name");
println!("Guild: {} (id: {})", guild.name, guild.id);
}
#[tokio::test]
async fn test_get_guild_channels() {
let (http, guild_id) = setup();
let channels = http
.get_guild_channels(guild_id)
.await
.expect("get_guild_channels failed");
println!("Guild has {} channels", channels.len());
}
#[tokio::test]
async fn test_get_guild_members() {
let (http, guild_id) = setup();
let members = http
.get_guild_members(guild_id)
.await
.expect("get_guild_members failed");
assert!(
!members.is_empty(),
"guild should have at least one member (the bot)"
);
println!("Guild has {} members", members.len());
}
#[tokio::test]
async fn test_get_guild_member_self() {
let (http, guild_id) = setup();
let me = http
.get_current_user()
.await
.expect("get_current_user failed");
let member = http
.get_guild_member(guild_id, me.id)
.await
.expect("get_guild_member failed");
let member_user = member.user.as_ref().expect("member should have user");
assert_eq!(member_user.id, me.id);
println!(
"Bot member: {} (joined: {})",
member_user.username, member.joined_at
);
}
#[tokio::test]
async fn test_modify_current_member_nick() {
let (http, guild_id) = setup();
match http
.modify_current_member(guild_id, &ModifyCurrentMember::nick("refluxer-test-nick"))
.await
{
Ok(member) => {
assert_eq!(member.nick.as_deref(), Some("refluxer-test-nick"));
println!("Nick set to: {}", member.nick.as_deref().unwrap_or("?"));
let _ = http
.modify_current_member(
guild_id,
&ModifyCurrentMember {
nick: Some(String::new()),
},
)
.await;
}
Err(refluxer::error::HttpError::Api { status: 403, .. }) => {
println!("Bot lacks CHANGE_NICKNAME permission — skipping");
}
Err(e) => panic!("unexpected error: {e}"),
}
}