twilight_model/guild/
ban.rs1use 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}