traq_bot_http/
payloads.rs

1#![allow(clippy::module_name_repetitions)]
2
3//! イベントペイロードの型定義
4
5use crate::macros::{all_events, payloads_impl_for_kinds};
6
7mod channel;
8mod message;
9pub(crate) mod serde;
10mod stamp;
11mod system;
12mod tag;
13pub mod types;
14mod user;
15mod user_group;
16
17pub use channel::{ChannelCreatedPayload, ChannelTopicChangedPayload};
18pub use message::{
19    BotMessageStampsUpdatedPayload, DirectMessageCreatedPayload, DirectMessageDeletedPayload,
20    DirectMessageUpdatedPayload, MessageCreatedPayload, MessageDeletedPayload,
21    MessageUpdatedPayload,
22};
23pub use stamp::StampCreatedPayload;
24pub use system::{JoinedPayload, LeftPayload, PingPayload};
25pub use tag::{TagAddedPayload, TagRemovedPayload};
26pub use user::UserCreatedPayload;
27pub use user_group::{
28    UserGroupAdminAddedPayload, UserGroupAdminRemovedPayload, UserGroupCreatedPayload,
29    UserGroupDeletedPayload, UserGroupMemberAddedPayload, UserGroupMemberRemovedPayload,
30    UserGroupMemberUpdatedPayload, UserGroupUpdatedPayload,
31};
32
33all_events! {payloads_impl_for_kinds}
34
35#[cfg(test)]
36mod tests {
37    use super::*;
38
39    use std::fs::read_to_string;
40
41    #[test]
42    fn direct_message_created_convert() {
43        let data = read_to_string("testdata/message/direct_message_created.json").unwrap();
44        let payload: DirectMessageCreatedPayload = data.parse().unwrap();
45        let payload: MessageCreatedPayload = payload.into();
46        assert_eq!(payload, data.parse().unwrap());
47    }
48
49    #[test]
50    fn message_created_convert() {
51        let data = read_to_string("testdata/message/message_created.json").unwrap();
52        let payload: MessageCreatedPayload = data.parse().unwrap();
53        let payload: DirectMessageCreatedPayload = payload.into();
54        assert_eq!(payload, data.parse().unwrap());
55    }
56
57    #[test]
58    fn direct_message_updated_convert() {
59        let data = read_to_string("testdata/message/direct_message_updated.json").unwrap();
60        let payload: DirectMessageUpdatedPayload = data.parse().unwrap();
61        let payload: MessageUpdatedPayload = payload.into();
62        assert_eq!(payload, data.parse().unwrap());
63    }
64
65    #[test]
66    fn message_updated_convert() {
67        let data = read_to_string("testdata/message/message_updated.json").unwrap();
68        let payload: MessageUpdatedPayload = data.parse().unwrap();
69        let payload: DirectMessageUpdatedPayload = payload.into();
70        assert_eq!(payload, data.parse().unwrap());
71    }
72
73    #[test]
74    fn left_convert() {
75        let data = read_to_string("testdata/system/left.json").unwrap();
76        let payload: LeftPayload = data.parse().unwrap();
77        let payload: JoinedPayload = payload.into();
78        assert_eq!(payload, data.parse().unwrap());
79    }
80
81    #[test]
82    fn joined_convert() {
83        let data = read_to_string("testdata/system/joined.json").unwrap();
84        let payload: JoinedPayload = data.parse().unwrap();
85        let payload: LeftPayload = payload.into();
86        assert_eq!(payload, data.parse().unwrap());
87    }
88
89    #[test]
90    fn tag_removed_convert() {
91        let data = read_to_string("testdata/tag/tag_removed.json").unwrap();
92        let payload: TagRemovedPayload = data.parse().unwrap();
93        let payload: TagAddedPayload = payload.into();
94        assert_eq!(payload, data.parse().unwrap());
95    }
96
97    #[test]
98    fn tag_added_convert() {
99        let data = read_to_string("testdata/tag/tag_added.json").unwrap();
100        let payload: TagAddedPayload = data.parse().unwrap();
101        let payload: TagRemovedPayload = payload.into();
102        assert_eq!(payload, data.parse().unwrap());
103    }
104
105    #[test]
106    fn user_group_updated_convert() {
107        let data = read_to_string("testdata/user-group/user_group_updated.json").unwrap();
108        let payload: UserGroupUpdatedPayload = data.parse().unwrap();
109        let payload: UserGroupDeletedPayload = payload.into();
110        assert_eq!(payload, data.parse().unwrap());
111    }
112
113    #[test]
114    fn user_group_deleted_convert() {
115        let data = read_to_string("testdata/user-group/user_group_deleted.json").unwrap();
116        let payload: UserGroupDeletedPayload = data.parse().unwrap();
117        let payload: UserGroupUpdatedPayload = payload.into();
118        assert_eq!(payload, data.parse().unwrap());
119    }
120
121    #[test]
122    fn user_group_member_added_convert() {
123        let data = read_to_string("testdata/user-group/user_group_member_added.json").unwrap();
124        let payload_base: UserGroupMemberAddedPayload = data.parse().unwrap();
125        let payload: UserGroupMemberUpdatedPayload = payload_base.clone().into();
126        assert_eq!(payload, data.parse().unwrap());
127        let payload: UserGroupMemberRemovedPayload = payload_base.clone().into();
128        assert_eq!(payload, data.parse().unwrap());
129        let payload: UserGroupAdminAddedPayload = payload_base.into();
130        assert_eq!(payload, data.parse().unwrap());
131    }
132
133    #[test]
134    fn user_group_member_updated_convert() {
135        let data = read_to_string("testdata/user-group/user_group_member_updated.json").unwrap();
136        let payload_base: UserGroupMemberUpdatedPayload = data.parse().unwrap();
137        let payload: UserGroupMemberAddedPayload = payload_base.clone().into();
138        assert_eq!(payload, data.parse().unwrap());
139        let payload: UserGroupMemberRemovedPayload = payload_base.into();
140        assert_eq!(payload, data.parse().unwrap());
141    }
142
143    #[test]
144    fn user_group_member_removed_convert() {
145        let data = read_to_string("testdata/user-group/user_group_member_removed.json").unwrap();
146        let payload_base: UserGroupMemberRemovedPayload = data.parse().unwrap();
147        let payload: UserGroupMemberAddedPayload = payload_base.clone().into();
148        assert_eq!(payload, data.parse().unwrap());
149        let payload: UserGroupMemberUpdatedPayload = payload_base.clone().into();
150        assert_eq!(payload, data.parse().unwrap());
151        let payload: UserGroupAdminRemovedPayload = payload_base.into();
152        assert_eq!(payload, data.parse().unwrap());
153    }
154
155    #[test]
156    fn user_group_admin_added_convert() {
157        let data = read_to_string("testdata/user-group/user_group_admin_added.json").unwrap();
158        let payload_base: UserGroupAdminAddedPayload = data.parse().unwrap();
159        let payload: UserGroupAdminRemovedPayload = payload_base.clone().into();
160        assert_eq!(payload, data.parse().unwrap());
161        let payload: UserGroupMemberAddedPayload = payload_base.into();
162        assert_eq!(payload, data.parse().unwrap());
163    }
164
165    #[test]
166    fn user_group_admin_removed_convert() {
167        let data = read_to_string("testdata/user-group/user_group_admin_removed.json").unwrap();
168        let payload_base: UserGroupAdminRemovedPayload = data.parse().unwrap();
169        let payload: UserGroupAdminAddedPayload = payload_base.clone().into();
170        assert_eq!(payload, data.parse().unwrap());
171        let payload: UserGroupMemberRemovedPayload = payload_base.into();
172        assert_eq!(payload, data.parse().unwrap());
173    }
174}