slack_rust/chat/
delete_scheduled_message.rs1use crate::error::Error;
5use crate::http_client::{get_slack_url, DefaultResponse, SlackWebAPIClient};
6use serde::{Deserialize, Serialize};
7use serde_with::skip_serializing_none;
8
9#[skip_serializing_none]
10#[derive(Deserialize, Serialize, Debug, Default, PartialEq)]
11pub struct DeleteScheduledMessageRequest {
12 pub channel: String,
13 pub scheduled_message_id: String,
14 pub as_user: Option<bool>,
15}
16
17pub async fn delete_scheduled_message<T>(
20 client: &T,
21 param: &DeleteScheduledMessageRequest,
22 bot_token: &str,
23) -> Result<DefaultResponse, Error>
24where
25 T: SlackWebAPIClient,
26{
27 let url = get_slack_url("chat.deleteScheduledMessage");
28 let json = serde_json::to_string(¶m)?;
29
30 client
31 .post_json(&url, &json, bot_token)
32 .await
33 .and_then(|result| {
34 serde_json::from_str::<DefaultResponse>(&result).map_err(Error::SerdeJsonError)
35 })
36}
37
38#[cfg(test)]
39mod test {
40 use super::*;
41 use crate::http_client::MockSlackWebAPIClient;
42
43 #[test]
44 fn convert_request() {
45 let request = DeleteScheduledMessageRequest {
46 channel: "C123456789".to_string(),
47 scheduled_message_id: "Q1234ABCD".to_string(),
48 as_user: Some(true),
49 };
50 let json = r##"{
51 "channel": "C123456789",
52 "scheduled_message_id": "Q1234ABCD",
53 "as_user": true
54}"##;
55
56 let j = serde_json::to_string_pretty(&request).unwrap();
57 assert_eq!(json, j);
58
59 let s = serde_json::from_str::<DeleteScheduledMessageRequest>(json).unwrap();
60 assert_eq!(request, s);
61 }
62
63 #[async_std::test]
64 async fn test_delete_scheduled_message() {
65 let param = DeleteScheduledMessageRequest {
66 channel: "C123456789".to_string(),
67 scheduled_message_id: "Q1234ABCD".to_string(),
68 as_user: Some(true),
69 };
70
71 let mut mock = MockSlackWebAPIClient::new();
72 mock.expect_post_json().returning(|_, _, _| {
73 Ok(r##"{
74 "ok": true
75}"##
76 .to_string())
77 });
78
79 let response = delete_scheduled_message(&mock, ¶m, &"test_token".to_string())
80 .await
81 .unwrap();
82 let expect = DefaultResponse {
83 ok: true,
84 ..Default::default()
85 };
86
87 assert_eq!(expect, response);
88 }
89}