refluxer 0.2.0

Rust API wrapper for Fluxer
Documentation
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}"),
    }
}