titanium_model/
cdn_tests.rs

1#[cfg(test)]
2mod tests {
3    use crate::{
4        member::{Emoji, Sticker},
5        Guild, Snowflake, User,
6    };
7
8    #[test]
9    fn test_user_cdn() {
10        let user = User {
11            id: Snowflake(123456789),
12            username: "test".to_string().into(),
13            discriminator: "0".to_string().into(),
14            global_name: None,
15            avatar: Some("a_123hash".to_string().into()),
16            bot: false,
17            system: false,
18            mfa_enabled: None,
19            banner: None,
20            accent_color: None,
21            locale: None,
22            verified: None,
23            email: None,
24            flags: None,
25            premium_type: None,
26            public_flags: None,
27            avatar_decoration_data: None,
28        };
29
30        // Animated avatar
31        assert_eq!(
32            user.avatar_url(),
33            Some("https://cdn.discordapp.com/avatars/123456789/a_123hash.gif".to_string())
34        );
35
36        // Default avatar (pomelo)
37        // (123456789 >> 22) % 6
38        // 123456789 = 0x075BCD15
39        // >> 22 = 29
40        // 29 % 6 = 5
41        assert_eq!(
42            user.default_avatar_url(),
43            "https://cdn.discordapp.com/embed/avatars/5.png"
44        );
45
46        // Face (prefers avatar)
47        assert_eq!(
48            user.face(),
49            "https://cdn.discordapp.com/avatars/123456789/a_123hash.gif"
50        );
51    }
52
53    #[test]
54    fn test_guild_cdn() {
55        let guild = Guild {
56            id: Snowflake(123),
57            name: "Test Guild".to_string().into(),
58            icon: Some("iconhash".to_string().into()),
59            icon_hash: None,
60            splash: Some("splashhash".to_string().into()),
61            discovery_splash: None,
62            owner_id: None,
63            permissions: None,
64            region: None,
65            afk_channel_id: None,
66            afk_timeout: None,
67            verification_level: None,
68            default_message_notifications: None,
69            explicit_content_filter: None,
70            roles: vec![],
71            emojis: vec![],
72            features: vec![],
73            mfa_level: None,
74            application_id: None,
75            system_channel_id: None,
76            system_channel_flags: None,
77            rules_channel_id: None,
78            max_presences: None,
79            max_members: None,
80            vanity_url_code: None,
81            description: None,
82            banner: None,
83            premium_tier: None,
84            premium_subscription_count: None,
85            preferred_locale: None,
86            public_updates_channel_id: None,
87            max_video_channel_users: None,
88            max_stage_video_channel_users: None,
89            approximate_member_count: None,
90            approximate_presence_count: None,
91            member_count: None,
92            nsfw_level: None,
93            stickers: vec![],
94            premium_progress_bar_enabled: None,
95            safety_alerts_channel_id: None,
96            voice_states: vec![],
97        };
98
99        assert_eq!(
100            guild.icon_url(),
101            Some("https://cdn.discordapp.com/icons/123/iconhash.png".to_string())
102        );
103        assert_eq!(
104            guild.splash_url(),
105            Some("https://cdn.discordapp.com/splashes/123/splashhash.png".to_string())
106        );
107    }
108
109    #[test]
110    fn test_emoji_sticker_cdn() {
111        let emoji = Emoji {
112            id: Some(Snowflake(999)),
113            name: None,
114            roles: vec![].into(),
115            user: None,
116            require_colons: false,
117            managed: false,
118            animated: true,
119            available: true,
120        };
121        assert_eq!(
122            emoji.url(),
123            Some("https://cdn.discordapp.com/emojis/999.gif".to_string())
124        );
125
126        let sticker = Sticker {
127            id: Snowflake(888),
128            pack_id: None,
129            name: "Test".to_string().into(),
130            description: None,
131            tags: "".to_string().into(),
132            sticker_type: 1,
133            format_type: 1, // PNG
134            user: None,
135            sort_value: None,
136        };
137        assert_eq!(sticker.url(), "https://cdn.discordapp.com/stickers/888.png");
138    }
139}