twilight_model/guild/widget/
settings.rs

1use crate::id::{marker::ChannelMarker, Id};
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
5pub struct GuildWidgetSettings {
6    pub channel_id: Id<ChannelMarker>,
7    pub enabled: bool,
8}
9
10#[cfg(test)]
11mod tests {
12    use super::GuildWidgetSettings;
13    use crate::id::Id;
14    use serde::{Deserialize, Serialize};
15    use serde_test::Token;
16    use static_assertions::{assert_fields, assert_impl_all};
17    use std::{fmt::Debug, hash::Hash};
18
19    assert_fields!(GuildWidgetSettings: channel_id, enabled);
20    assert_impl_all!(
21        GuildWidgetSettings: Clone,
22        Debug,
23        Deserialize<'static>,
24        Eq,
25        Hash,
26        PartialEq,
27        Serialize,
28        Send,
29        Sync
30    );
31
32    #[test]
33    fn guild_widget_settings() {
34        let value = GuildWidgetSettings {
35            channel_id: Id::new(111_111_111_111_111_111),
36            enabled: true,
37        };
38
39        serde_test::assert_tokens(
40            &value,
41            &[
42                Token::Struct {
43                    name: "GuildWidgetSettings",
44                    len: 2,
45                },
46                Token::Str("channel_id"),
47                Token::NewtypeStruct { name: "Id" },
48                Token::Str("111111111111111111"),
49                Token::Str("enabled"),
50                Token::Bool(true),
51                Token::StructEnd,
52            ],
53        );
54    }
55}