twilight_model/guild/onboarding/
mod.rs1mod mode;
4mod option;
5mod prompt;
6mod prompt_type;
7
8use crate::id::{
9 marker::{ChannelMarker, GuildMarker},
10 Id,
11};
12use serde::{Deserialize, Serialize};
13
14pub use self::{
15 mode::OnboardingMode,
16 option::{OnboardingPromptEmoji, OnboardingPromptOption},
17 prompt::OnboardingPrompt,
18 prompt_type::OnboardingPromptType,
19};
20
21#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
23pub struct Onboarding {
24 pub default_channel_ids: Vec<Id<ChannelMarker>>,
26 pub enabled: bool,
28 pub guild_id: Id<GuildMarker>,
30 pub mode: OnboardingMode,
32 pub prompts: Vec<OnboardingPrompt>,
34}
35
36#[cfg(test)]
37mod tests {
38 use super::{Onboarding, OnboardingMode};
39 use crate::id::Id;
40 use serde_test::Token;
41
42 #[test]
43 fn onboarding() {
44 let onboarding = Onboarding {
45 default_channel_ids: Vec::new(),
46 enabled: true,
47 guild_id: Id::new(123_456_789),
48 mode: OnboardingMode::OnboardingDefault,
49 prompts: Vec::new(),
50 };
51
52 serde_test::assert_tokens(
53 &onboarding,
54 &[
55 Token::Struct {
56 name: "Onboarding",
57 len: 5,
58 },
59 Token::Str("default_channel_ids"),
60 Token::Seq { len: Some(0) },
61 Token::SeqEnd,
62 Token::Str("enabled"),
63 Token::Bool(true),
64 Token::Str("guild_id"),
65 Token::NewtypeStruct { name: "Id" },
66 Token::Str("123456789"),
67 Token::Str("mode"),
68 Token::U8(0),
69 Token::Str("prompts"),
70 Token::Seq { len: Some(0) },
71 Token::SeqEnd,
72 Token::StructEnd,
73 ],
74 )
75 }
76}