diff --git a/Cargo.toml b/Cargo.toml index 8366ce3..84b2167 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,7 @@ skeptic = "0.13.3" [dev-dependencies] skeptic = "0.13.3" +tempfile = "3.0.3" [package.metadata.docs.rs] features = ["all"] diff --git a/src/entities/account.rs b/src/entities/account.rs index 63b1276..8cfa9a6 100644 --- a/src/entities/account.rs +++ b/src/entities/account.rs @@ -122,3 +122,86 @@ impl<'a> CredentialsBuilder<'a> { Ok(form) } } + +#[cfg(test)] +mod tests { + use super::*; + use tempfile::NamedTempFile; + + #[test] + fn test_credentials_builder_to_form() { + let avatar = NamedTempFile::new().expect("Couldn't make avatar file"); + let header = NamedTempFile::new().expect("Couldn't make header file"); + let tests = [ + (None, None, None, None), + (Some("my-display-name"), None, None, None), + (None, Some("my-note"), None, None), + (None, None, Some(avatar.path().clone()), None), + (None, None, None, Some(header.path().clone())), + (Some("my-display-name"), Some("my-note"), None, None), + ( + Some("my-display-name"), + None, + Some(avatar.path().clone()), + None, + ), + (None, Some("my-note"), Some(avatar.path().clone()), None), + (None, Some("my-note"), None, Some(header.path().clone())), + ( + None, + None, + Some(avatar.path().clone()), + Some(header.path().clone()), + ), + ( + Some("my-display-name"), + None, + None, + Some(header.path().clone()), + ), + ( + Some("my-display-name"), + Some("my-note"), + Some(avatar.path().clone()), + None, + ), + ( + Some("my-display-name"), + Some("my-note"), + None, + Some(header.path().clone()), + ), + ( + Some("my-display-name"), + None, + Some(avatar.path().clone()), + Some(header.path().clone()), + ), + ( + None, + Some("my-note"), + Some(avatar.path().clone()), + Some(header.path().clone()), + ), + ( + Some("my-display-name"), + Some("my-note"), + Some(avatar.path().clone()), + Some(header.path().clone()), + ), + ]; + + for test in tests.into_iter() { + let (display_name, note, avatar, header) = test; + let credentials_builder = CredentialsBuilder { + display_name: *display_name, + note: *note, + avatar: *avatar, + header: *header, + }; + let _form = credentials_builder + .into_form() + .expect("could not create form"); + } + } +} diff --git a/src/lib.rs b/src/lib.rs index a09bb19..d81331f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -43,6 +43,9 @@ extern crate url; #[cfg(feature = "toml")] extern crate toml as tomlcrate; +#[cfg(test)] +extern crate tempfile; + use std::{borrow::Cow, ops}; use reqwest::{