Allow the user to update their profile metadata fields

Closes #54
This commit is contained in:
Paul Woolcock
2018-09-04 16:20:00 -04:00
parent 375e4af286
commit 0ad1e3741c
2 changed files with 73 additions and 3 deletions
+34 -2
View File
@@ -3,7 +3,7 @@ use std::{
path::{Path, PathBuf},
};
use entities::account::{Credentials, UpdateSource};
use entities::account::{Credentials, MetadataField, UpdateSource};
use errors::Result;
use status_builder;
@@ -39,6 +39,7 @@ pub struct UpdateCredsRequest {
note: Option<String>,
avatar: Option<PathBuf>,
header: Option<PathBuf>,
field_attributes: Vec<MetadataField>,
// UpdateSource fields
privacy: Option<status_builder::Visibility>,
@@ -166,6 +167,23 @@ impl UpdateCredsRequest {
self
}
/// Add a metadata field
///
/// # Example
///
/// ```
/// # extern crate elefren;
/// use elefren::UpdateCredsRequest;
///
/// let mut builder = UpdateCredsRequest::new();
///
/// builder.field_attribute("some key", "some value");
/// ```
pub fn field_attribute(&mut self, name: &str, value: &str) -> &mut Self {
self.field_attributes.push(MetadataField::new(name, value));
self
}
pub(crate) fn build(&mut self) -> Result<Credentials> {
Ok(Credentials {
display_name: self.display_name.clone(),
@@ -176,6 +194,7 @@ impl UpdateCredsRequest {
privacy: self.privacy.clone(),
sensitive: self.sensitive.clone(),
}),
fields_attributes: self.field_attributes.clone(),
})
}
}
@@ -183,7 +202,7 @@ impl UpdateCredsRequest {
#[cfg(test)]
mod tests {
use super::*;
use entities::account::{Credentials, UpdateSource};
use entities::account::{Credentials, MetadataField, UpdateSource};
use status_builder::Visibility;
#[test]
@@ -275,6 +294,19 @@ mod tests {
);
}
#[test]
fn test_update_creds_request_field_attribute() {
let mut builder = UpdateCredsRequest::new();
builder.field_attribute("foo", "bar");
assert_eq!(
builder,
UpdateCredsRequest {
field_attributes: vec![MetadataField::new("foo", "bar")],
..Default::default()
}
);
}
#[test]
fn test_update_creds_request_build() {
let mut builder = UpdateCredsRequest::new();