twilight_model/guild/
ban.rs

1use crate::user::User;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
5pub struct Ban {
6    pub reason: Option<String>,
7    pub user: User,
8}
9
10#[cfg(test)]
11mod tests {
12    use super::{Ban, User};
13    use crate::{id::Id, test::image_hash};
14    use serde_test::Token;
15
16    #[test]
17    fn ban() {
18        let ban = Ban {
19            reason: Some("foo".to_owned()),
20            user: User {
21                accent_color: None,
22                avatar: Some(image_hash::AVATAR),
23                avatar_decoration: None,
24                avatar_decoration_data: None,
25                banner: None,
26                bot: false,
27                discriminator: 1,
28                email: None,
29                flags: None,
30                global_name: Some("test".to_owned()),
31                id: Id::new(100_000_000_000_000_000),
32                locale: None,
33                mfa_enabled: None,
34                name: "test".to_owned(),
35                premium_type: None,
36                primary_guild: None,
37                public_flags: None,
38                system: None,
39                verified: None,
40            },
41        };
42
43        serde_test::assert_de_tokens(
44            &ban,
45            &[
46                Token::Struct {
47                    name: "Ban",
48                    len: 2,
49                },
50                Token::Str("reason"),
51                Token::Some,
52                Token::Str("foo"),
53                Token::Str("user"),
54                Token::Struct {
55                    name: "User",
56                    len: 8,
57                },
58                Token::Str("accent_color"),
59                Token::None,
60                Token::Str("avatar"),
61                Token::Some,
62                Token::Str(image_hash::AVATAR_INPUT),
63                Token::Str("avatar_decoration"),
64                Token::None,
65                Token::Str("banner"),
66                Token::None,
67                Token::Str("discriminator"),
68                Token::Str("0001"),
69                Token::Str("global_name"),
70                Token::Some,
71                Token::Str("test"),
72                Token::Str("id"),
73                Token::NewtypeStruct { name: "Id" },
74                Token::Str("100000000000000000"),
75                Token::Str("public_flags"),
76                Token::None,
77                Token::Str("username"),
78                Token::Str("test"),
79                Token::StructEnd,
80                Token::StructEnd,
81            ],
82        );
83    }
84}