From 422e36b4055e839744b06ab19a7ecb4c562db1f2 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 12 Dec 2022 23:54:09 -0500 Subject: [PATCH] add tests --- crates/lib/tokens/src/users/user.rs | 49 ++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/crates/lib/tokens/src/users/user.rs b/crates/lib/tokens/src/users/user.rs index 7895e29c97..d71e4477df 100644 --- a/crates/lib/tokens/src/users/user.rs +++ b/crates/lib/tokens/src/users/user.rs @@ -2,7 +2,7 @@ use serde::{Deserializer, Serializer}; use std::fmt::{Debug, Display, Formatter}; // https://docs.rs/sqlx/latest/sqlx/trait.Type.html -#[derive(Clone, PartialEq, Eq, sqlx::Type)] +#[derive(Clone, PartialEq, Eq, sqlx::Type, Debug)] #[sqlx(transparent)] pub struct UserToken(pub String); @@ -14,12 +14,6 @@ impl Display for UserToken { } } -impl Debug for UserToken { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", self.0) - } -} - impl serde::Serialize for UserToken { fn serialize(&self, serializer: S) -> Result { serializer.serialize_str(&self.0) @@ -32,3 +26,44 @@ impl<'de> serde::Deserialize<'de> for UserToken { Ok(UserToken(s)) } } + +#[cfg(test)] +mod tests { + use crate::users::user::UserToken; + + #[test] + fn test_display_trait() { + let token = UserToken("U:foo".to_string()); + assert_eq!(format!("{}", token), "U:foo".to_string()); + } + + #[test] + fn test_debug_trait() { + let token = UserToken("U:foo".to_string()); + assert_eq!(format!("{:?}", token), "UserToken(\"U:foo\")".to_string()); + } + + #[test] + fn test_serialize_trait() { + let expected = "\"U:foo\"".to_string(); // NB: Quoted + + let token = UserToken("U:foo".to_string()); + assert_eq!(expected, toml::to_string(&token).unwrap()); + + // Just to show this serializes the same as a string + assert_eq!(expected, toml::to_string("U:foo").unwrap()); + } + + #[test] + fn test_deserialize_trait() { + let payload = "\"U:foo\""; + let expected = "U:foo".to_string(); + + let value : UserToken = serde_json::from_str(payload).unwrap(); + assert_eq!(value, UserToken(expected.clone())); + + // Just to show this deserializes the same way as a string + let value : String = serde_json::from_str(payload).unwrap(); + assert_eq!(value, expected.clone()); + } +} \ No newline at end of file