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                public_flags: None,
37                system: None,
38                verified: None,
39            },
40        };
41
42        serde_test::assert_de_tokens(
43            &ban,
44            &[
45                Token::Struct {
46                    name: "Ban",
47                    len: 2,
48                },
49                Token::Str("reason"),
50                Token::Some,
51                Token::Str("foo"),
52                Token::Str("user"),
53                Token::Struct {
54                    name: "User",
55                    len: 8,
56                },
57                Token::Str("accent_color"),
58                Token::None,
59                Token::Str("avatar"),
60                Token::Some,
61                Token::Str(image_hash::AVATAR_INPUT),
62                Token::Str("avatar_decoration"),
63                Token::None,
64                Token::Str("banner"),
65                Token::None,
66                Token::Str("discriminator"),
67                Token::Str("0001"),
68                Token::Str("global_name"),
69                Token::Some,
70                Token::Str("test"),
71                Token::Str("id"),
72                Token::NewtypeStruct { name: "Id" },
73                Token::Str("100000000000000000"),
74                Token::Str("public_flags"),
75                Token::None,
76                Token::Str("username"),
77                Token::Str("test"),
78                Token::StructEnd,
79                Token::StructEnd,
80            ],
81        );
82    }
83}