twilight_model/guild/
info.rs1use crate::{
2 guild::Permissions,
3 id::{marker::GuildMarker, Id},
4 util::image_hash::ImageHash,
5};
6use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
9pub struct GuildInfo {
10 pub icon: Option<ImageHash>,
11 pub id: Id<GuildMarker>,
12 pub name: String,
13 pub owner: bool,
14 pub permissions: Permissions,
15}
16
17#[cfg(test)]
18mod tests {
19 use super::{GuildInfo, Permissions};
20 use crate::{id::Id, test::image_hash};
21 use serde_test::Token;
22
23 #[test]
24 fn guild_info() {
25 let value = GuildInfo {
26 icon: Some(image_hash::ICON),
27 id: Id::new(1),
28 name: "guild name".to_owned(),
29 owner: false,
30 permissions: Permissions::MANAGE_CHANNELS,
31 };
32
33 serde_test::assert_tokens(
34 &value,
35 &[
36 Token::Struct {
37 name: "GuildInfo",
38 len: 5,
39 },
40 Token::Str("icon"),
41 Token::Some,
42 Token::Str(image_hash::ICON_INPUT),
43 Token::Str("id"),
44 Token::NewtypeStruct { name: "Id" },
45 Token::Str("1"),
46 Token::Str("name"),
47 Token::Str("guild name"),
48 Token::Str("owner"),
49 Token::Bool(false),
50 Token::Str("permissions"),
51 Token::Str("16"),
52 Token::StructEnd,
53 ],
54 );
55 }
56}