mod common;
use common::setup;
use refluxer::http::endpoints::guilds::CreateGuildChannel;
use refluxer::http::endpoints::invites::CreateInvite;
#[tokio::test]
async fn test_invite_create_and_delete() {
let (http, guild_id) = setup();
let channel = http
.create_guild_channel(guild_id, &CreateGuildChannel::text("refluxer-test-invites"))
.await
.expect("create channel failed");
match http
.create_channel_invite(channel.id, &CreateInvite::new().max_age(60).max_uses(1))
.await
{
Ok(invite) => {
assert!(!invite.code.is_empty());
println!("Created invite: {}", invite.code);
let fetched = http
.get_invite(&invite.code)
.await
.expect("get_invite failed");
assert_eq!(fetched.code, invite.code);
let guild_invites = http
.get_guild_invites(guild_id)
.await
.expect("get_guild_invites failed");
assert!(
guild_invites.iter().any(|i| i.code == invite.code),
"invite should be in guild invites"
);
http.delete_invite(&invite.code)
.await
.expect("delete_invite failed");
println!("Invite tests passed");
}
Err(refluxer::error::HttpError::Api { status: 403, .. }) => {
println!("Bot lacks CREATE_INSTANT_INVITE permission — skipping");
}
Err(e) => panic!("unexpected error: {e}"),
}
http.delete_channel(channel.id)
.await
.expect("cleanup channel failed");
}