diff --git a/src/lib.rs b/src/lib.rs index 2a8c232..bd06952 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,8 +16,6 @@ use std::{ }; use uuid::Uuid; -struct Request; - #[derive(Clone)] enum Field { Static(String), @@ -28,7 +26,7 @@ impl From for Field { fn from(value: String) -> Self { match Uuid::try_from(value.as_str()) { Ok(data) => return Field::Uuid(data), - Err(_) => {}, + Err(_) => {} } Field::Static(value) } @@ -38,7 +36,7 @@ impl From<&str> for Field { fn from(value: &str) -> Self { match Uuid::try_from(value) { Ok(data) => return Field::Uuid(data), - Err(_) => {}, + Err(_) => {} } Field::Static(value.into()) } @@ -107,6 +105,51 @@ mod fields { } } +struct Request { + id: Option, +} + +impl Request { + fn new(mut id: Option) -> Self + where + F: Into, + { + let result: Option; + match id { + Some(data) => { + result = Some(data.into()); + } + None => result = None, + } + Self { id: result } + } +} + +#[cfg(test)] +mod requests { + use super::*; + + #[test] + fn create_request_no_id() { + let input: Option = None; + let req = Request::new(input); + assert!(req.id.is_none()); + } + + #[test] + fn create_request_with_uuid() { + let id = Uuid::new_v4(); + let req = Request::new(Some(id)); + match req.id { + Some(field) => match (field) { + Field::Uuid(data) => assert_eq!(data, id), + _ => unreachable!("Should have been a uuid"), + }, + None => unreachable!("Should producer data"), + } + } +} + struct Record { data: HashMap, } @@ -279,7 +322,7 @@ mod responses { match rec.get(col).unwrap() { Field::Static(txt) => { assert_eq!(txt.clone(), fields.next().unwrap().to_string()) - }, + } _ => unreachable!("should have been static"), } }