twilight_model/gateway/payload/incoming/
guild_delete.rs1use crate::id::{marker::GuildMarker, Id};
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
5pub struct GuildDelete {
6 pub id: Id<GuildMarker>,
7 pub unavailable: Option<bool>,
9}
10
11#[cfg(test)]
12mod tests {
13 use super::super::GuildDelete;
14 use crate::id::Id;
15 use serde_test::Token;
16
17 #[test]
18 fn guild_delete_available() {
19 let expected = GuildDelete {
20 id: Id::new(123),
21 unavailable: Some(true),
22 };
23
24 serde_test::assert_de_tokens(
25 &expected,
26 &[
27 Token::Struct {
28 name: "GuildDelete",
29 len: 2,
30 },
31 Token::Str("id"),
32 Token::NewtypeStruct { name: "Id" },
33 Token::Str("123"),
34 Token::Str("unavailable"),
35 Token::Some,
36 Token::Bool(true),
37 Token::StructEnd,
38 ],
39 );
40 serde_test::assert_ser_tokens(
41 &expected,
42 &[
43 Token::Struct {
44 name: "GuildDelete",
45 len: 2,
46 },
47 Token::Str("id"),
48 Token::NewtypeStruct { name: "Id" },
49 Token::Str("123"),
50 Token::Str("unavailable"),
51 Token::Some,
52 Token::Bool(true),
53 Token::StructEnd,
54 ],
55 );
56 }
57
58 #[test]
59 fn guild_delete_unavailable() {
60 let expected = GuildDelete {
61 id: Id::new(123),
62 unavailable: Some(false),
63 };
64
65 serde_test::assert_de_tokens(
66 &expected,
67 &[
68 Token::Struct {
69 name: "GuildDelete",
70 len: 2,
71 },
72 Token::Str("id"),
73 Token::NewtypeStruct { name: "Id" },
74 Token::Str("123"),
75 Token::Str("unavailable"),
76 Token::Some,
77 Token::Bool(false),
78 Token::StructEnd,
79 ],
80 );
81 serde_test::assert_ser_tokens(
82 &expected,
83 &[
84 Token::Struct {
85 name: "GuildDelete",
86 len: 2,
87 },
88 Token::Str("id"),
89 Token::NewtypeStruct { name: "Id" },
90 Token::Str("123"),
91 Token::Str("unavailable"),
92 Token::Some,
93 Token::Bool(false),
94 Token::StructEnd,
95 ],
96 );
97 }
98
99 #[test]
100 fn guild_delete_unavailable_null_default() {
101 let expected = GuildDelete {
102 id: Id::new(123),
103 unavailable: None,
104 };
105
106 serde_test::assert_de_tokens(
107 &expected,
108 &[
109 Token::Struct {
110 name: "GuildDelete",
111 len: 1,
112 },
113 Token::Str("id"),
114 Token::NewtypeStruct { name: "Id" },
115 Token::Str("123"),
116 Token::StructEnd,
117 ],
118 );
119 }
120}