misskey_api/endpoint/notes/polls/
vote.rs

1use crate::model::{id::Id, note::Note};
2
3use serde::Serialize;
4
5#[derive(Serialize, Debug, Clone)]
6#[serde(rename_all = "camelCase")]
7pub struct Request {
8    pub note_id: Id<Note>,
9    pub choice: u64,
10}
11
12impl misskey_core::Request for Request {
13    type Response = ();
14    const ENDPOINT: &'static str = "notes/polls/vote";
15}
16
17#[cfg(test)]
18mod tests {
19    use super::Request;
20    use crate::test::{ClientExt, TestClient};
21
22    #[tokio::test]
23    async fn request() {
24        let client = TestClient::new();
25
26        let poll = crate::endpoint::notes::create::PollRequest {
27            choices: vec!["a".to_string(), "b".to_string(), "c".to_string()],
28            multiple: None,
29            expires_at: None,
30            expired_after: None,
31        };
32        let note = client
33            .test(crate::endpoint::notes::create::Request {
34                visibility: None,
35                visible_user_ids: None,
36                text: Some("poll".to_string()),
37                cw: None,
38                via_mobile: None,
39                local_only: None,
40                no_extract_mentions: None,
41                no_extract_hashtags: None,
42                no_extract_emojis: None,
43                file_ids: None,
44                reply_id: None,
45                renote_id: None,
46                poll: Some(poll),
47                #[cfg(feature = "12-47-0")]
48                channel_id: None,
49            })
50            .await
51            .created_note;
52
53        client
54            .test(Request {
55                note_id: note.id,
56                choice: 1,
57            })
58            .await;
59    }
60}