serenity 0.5.1

A Rust library for the Discord API.
Documentation
#![cfg(feature = "model")]

extern crate parking_lot;
extern crate serenity;

#[cfg(feature = "utils")]
mod utils {
    use parking_lot::RwLock;
    use serenity::model::prelude::*;
    use std::collections::HashMap;
    use std::sync::Arc;

    fn group() -> Group {
        Group {
            channel_id: ChannelId(1),
            icon: None,
            last_message_id: None,
            last_pin_timestamp: None,
            name: None,
            owner_id: UserId(2),
            recipients: HashMap::new(),
        }
    }

    fn guild_channel() -> GuildChannel {
        GuildChannel {
            id: ChannelId(1),
            bitrate: None,
            category_id: None,
            guild_id: GuildId(2),
            kind: ChannelType::Text,
            last_message_id: None,
            last_pin_timestamp: None,
            name: "nsfw-stuff".to_string(),
            permission_overwrites: vec![],
            position: 0,
            topic: None,
            user_limit: None,
            nsfw: false,
        }
    }

    fn private_channel() -> PrivateChannel {
        PrivateChannel {
            id: ChannelId(1),
            last_message_id: None,
            last_pin_timestamp: None,
            kind: ChannelType::Private,
            recipient: Arc::new(RwLock::new(User {
                id: UserId(2),
                avatar: None,
                bot: false,
                discriminator: 1,
                name: "ab".to_string(),
            })),
        }
    }

    #[test]
    fn nsfw_checks() {
        let mut channel = guild_channel();
        assert!(channel.is_nsfw());
        channel.kind = ChannelType::Voice;
        assert!(!channel.is_nsfw());

        channel.kind = ChannelType::Text;
        channel.name = "nsfw-".to_string();
        assert!(channel.is_nsfw());

        channel.name = "nsfw".to_string();
        assert!(channel.is_nsfw());
        channel.kind = ChannelType::Voice;
        assert!(!channel.is_nsfw());
        channel.kind = ChannelType::Text;

        channel.name = "nsf".to_string();
        channel.nsfw = true;
        assert!(channel.is_nsfw());
        channel.nsfw = false;
        assert!(!channel.is_nsfw());

        let channel = Channel::Guild(Arc::new(RwLock::new(channel)));
        assert!(!channel.is_nsfw());

        let group = group();
        assert!(!group.is_nsfw());

        let private_channel = private_channel();
        assert!(!private_channel.is_nsfw());
    }
}