zulip-api 0.0.8

Client library for interacting with the Zulip API
Documentation
use serde::{Deserialize, Serialize};

use crate::{field_access, impl_default, impl_display};

/// Represents the request for the `Get Read Receipts` Zulip API endpoint.
///
/// See [get-read-receipts](https://zulip.com/api/get-read-receipts) for details.
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
pub struct Request {
    #[serde(skip)]
    message_id: u64,
}

impl Request {
    /// Creates a new [Request].
    pub const fn new() -> Self {
        Self { message_id: 0 }
    }
}

field_access! {
    Request {
        /// The target message's ID.
        message_id: u64,
    }
}

impl_default!(Request);
impl_display!(Request);

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_request() {
        let message_id = 1;

        let mut request = Request::new().with_message_id(message_id);
        let request_json = request.to_string();

        assert_eq!(request.message_id(), message_id);

        assert_eq!(serde_json::to_string(&request).unwrap(), request_json);
        request.set_message_id(0);
        assert_eq!(
            serde_json::from_str::<Request>(&request_json).unwrap(),
            request
        );
    }
}