twilight_model/gateway/payload/incoming/
role_update.rs

1use crate::{
2    guild::Role,
3    id::{marker::GuildMarker, Id},
4};
5use serde::{Deserialize, Serialize};
6
7#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
8pub struct RoleUpdate {
9    pub guild_id: Id<GuildMarker>,
10    pub role: Role,
11}
12
13#[cfg(test)]
14mod tests {
15    use super::{Role, RoleUpdate};
16    use crate::{
17        guild::{Permissions, RoleFlags},
18        id::Id,
19    };
20    use serde_test::Token;
21
22    #[test]
23    fn role_update() {
24        let value = RoleUpdate {
25            guild_id: Id::new(1),
26            role: Role {
27                color: 0,
28                hoist: true,
29                icon: None,
30                id: Id::new(1),
31                managed: false,
32                mentionable: false,
33                name: "a role".to_owned(),
34                permissions: Permissions::SEND_MESSAGES,
35                position: 12,
36                flags: RoleFlags::empty(),
37                tags: None,
38                unicode_emoji: None,
39            },
40        };
41
42        serde_test::assert_tokens(
43            &value,
44            &[
45                Token::Struct {
46                    name: "RoleUpdate",
47                    len: 2,
48                },
49                Token::Str("guild_id"),
50                Token::NewtypeStruct { name: "Id" },
51                Token::Str("1"),
52                Token::Str("role"),
53                Token::Struct {
54                    name: "Role",
55                    len: 9,
56                },
57                Token::Str("color"),
58                Token::U32(0),
59                Token::Str("hoist"),
60                Token::Bool(true),
61                Token::Str("id"),
62                Token::NewtypeStruct { name: "Id" },
63                Token::Str("1"),
64                Token::Str("managed"),
65                Token::Bool(false),
66                Token::Str("mentionable"),
67                Token::Bool(false),
68                Token::Str("name"),
69                Token::Str("a role"),
70                Token::Str("permissions"),
71                Token::Str("2048"),
72                Token::Str("position"),
73                Token::I64(12),
74                Token::Str("flags"),
75                Token::U64(0),
76                Token::StructEnd,
77                Token::StructEnd,
78            ],
79        );
80    }
81}