diff --git a/src/status_builder.rs b/src/status_builder.rs index dfb9acc..985361d 100644 --- a/src/status_builder.rs +++ b/src/status_builder.rs @@ -1,5 +1,5 @@ /// A builder pattern struct for constructing a status. -#[derive(Debug, Default, Clone, Serialize)] +#[derive(Debug, Default, Clone, Serialize, PartialEq)] pub struct StatusBuilder { /// The text of the status. pub status: String, @@ -21,19 +21,16 @@ pub struct StatusBuilder { } /// The visibility of a status. -#[derive(Clone, Copy, Debug, Deserialize, Serialize)] +#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq)] +#[serde(rename_all = "lowercase")] pub enum Visibility { /// A Direct message to a user - #[serde(rename = "direct")] Direct, /// Only available to followers - #[serde(rename = "private")] Private, /// Not shown in public timelines - #[serde(rename = "unlisted")] Unlisted, /// Posted to public timelines - #[serde(rename = "public")] Public, } @@ -42,11 +39,11 @@ impl StatusBuilder { /// ``` /// use elefren::prelude::*; /// - /// let status = StatusBuilder::new("Hello World!".into()); + /// let status = StatusBuilder::new("Hello World!"); /// ``` - pub fn new(status: String) -> Self { + pub fn new>(status: I) -> Self { StatusBuilder { - status, + status: status.into(), ..Self::default() } } @@ -57,3 +54,28 @@ impl Default for Visibility { Visibility::Public } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_new() { + let s = StatusBuilder::new("a status"); + let expected = StatusBuilder { + status: "a status".to_string(), + in_reply_to_id: None, + media_ids: None, + sensitive: None, + spoiler_text: None, + visibility: None, + }; + assert_eq!(s, expected); + } + + #[test] + fn test_default_visibility() { + let v = Visibility::default(); + assert_eq!(v, Visibility::Public); + } +}