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 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}