brawl-rs 0.1.0

A Rust wrapper for the Brawl Stars API
Documentation
#[cfg(test)]
mod tests {
    use brawl_rs::prelude::*;
    use std::env::var;

    const TEST_PLAYER_TAG: &str = "20YY0G9L0";
    const TEST_CLUB_TAG: &str = "82Y2QCCCQ";

    #[tokio::test]
    #[cfg(feature = "player")]
    async fn test_player() {
        let client = BrawlClient::new(var("BRAWL_TOKEN").unwrap());
        let player = Player::get(&client, TEST_PLAYER_TAG).await;

        assert!(player.is_ok());

        let player = player.unwrap();

        assert_eq!(player.tag, format!("#{TEST_PLAYER_TAG}"));
        assert_eq!(player.name, "k1llm3sixy");

        assert!(player.trophies > 0);
        assert!(player.highest_trophies >= player.trophies);
        assert!(!player.brawlers.is_empty());
    }

    #[tokio::test]
    #[cfg(feature = "club")]
    async fn test_club() {
        let client = BrawlClient::new(var("BRAWL_TOKEN").unwrap());
        let club = Club::get(&client, TEST_CLUB_TAG).await;

        assert!(club.is_ok());

        let club = club.unwrap();

        assert_eq!(club.tag, format!("#{TEST_CLUB_TAG}"));
        assert!(!club.name.is_empty());
        assert!(!club.kind.is_empty());
        assert!(club.trophies > 0);
        assert!(club.badge_id > 0);
        assert!(!club.members.is_empty());
    }

    #[tokio::test]
    #[cfg(feature = "battle_log")]
    async fn test_battle_log() {
        let client = BrawlClient::new(var("BRAWL_TOKEN").unwrap());
        let battle_log = BattleLog::get(&client, TEST_PLAYER_TAG).await;

        assert!(battle_log.is_ok());

        let battle_log = battle_log.unwrap();

        if !battle_log.items.is_empty() {
            for battle in &battle_log.items {
                assert!(battle.battle_time <= chrono::Utc::now());
                assert_ne!(battle.event.mode_id, 0);
                assert!(!battle.battle.mode.is_empty());
                assert!(!battle.battle.kind.is_empty());
            }
        }
    }

    #[tokio::test]
    #[cfg(feature = "brawlers")]
    async fn test_brawlers() {
        let client = BrawlClient::new(var("BRAWL_TOKEN").unwrap());
        let brawlers = Brawlers::get(&client).await;

        assert!(brawlers.is_ok());

        let brawlers = brawlers.unwrap();

        assert!(!brawlers.items.is_empty());

        for brawler in &brawlers.items {
            assert!(brawler.id > 0);
            assert!(!brawler.name.is_empty());
        }
    }

    #[tokio::test]
    #[cfg(feature = "events")]
    async fn test_events() {
        let client = BrawlClient::new(var("BRAWL_TOKEN").unwrap());

        // Test GameModes
        let game_modes = GameModes::get(&client).await;
        assert!(game_modes.is_ok());
        let game_modes = game_modes.unwrap();
        assert!(!game_modes.items.is_empty());

        // Test Rotation
        let rotation = Rotation::get(&client).await;
        assert!(rotation.is_ok());
        let rotation = rotation.unwrap();
        assert!(!rotation.is_empty());
        for rot in &rotation {
            assert!(rot.start_time < rot.end_time);
            assert!(!rot.event.mode.is_empty());
            assert!(!rot.event.map.is_empty());
        }
    }

    #[tokio::test]
    #[cfg(feature = "rankings")]
    async fn test_rankings() {
        let client = BrawlClient::new(var("BRAWL_TOKEN").unwrap());

        // Test club rankings
        let club_rankings = RankingsClub::get(&client, "global").await;
        assert!(club_rankings.is_ok());
        let club_rankings = club_rankings.unwrap();
        assert!(!club_rankings.items.is_empty());
        for club in &club_rankings.items {
            assert!(!club.tag.is_empty());
            assert!(!club.name.is_empty());
            assert!(club.trophies > 0);
            assert!(club.rank > 0);
            assert!(club.badge_id > 0);
            assert!(club.member_count > 0);
        }

        // Test player rankings
        let player_rankings = RankingsPlayer::get(&client, "global").await;
        assert!(player_rankings.is_ok());
        let player_rankings = player_rankings.unwrap();
        assert!(!player_rankings.items.is_empty());
        for player in &player_rankings.items {
            assert!(!player.tag.is_empty());
            assert!(!player.name.is_empty());
            assert!(player.trophies > 0);
            assert!(player.rank > 0);
            assert!(!player.name_color.is_empty());
        }
    }
}