Added uuid as a field.
All checks were successful
MoreThanText/morethantext/pipeline/head This commit looks good

This commit is contained in:
Jeff Baskin 2025-02-17 14:55:36 -05:00
parent c511b623fd
commit 6bb7add4b0

View File

@ -14,26 +14,42 @@ use std::{
ops::Deref, ops::Deref,
sync::mpsc::{channel, Sender}, sync::mpsc::{channel, Sender},
}; };
use uuid::Uuid;
struct Request; struct Request;
#[derive(Clone)] #[derive(Clone)]
enum Field { enum Field {
Static(String), Static(String),
Uuid(Uuid),
} }
impl From<String> for Field { impl From<String> for Field {
fn from(value: String) -> Self { fn from(value: String) -> Self {
match Uuid::try_from(value.as_str()) {
Ok(data) => return Field::Uuid(data),
Err(_) => {},
}
Field::Static(value) Field::Static(value)
} }
} }
impl From<&str> for Field { impl From<&str> for Field {
fn from(value: &str) -> Self { fn from(value: &str) -> Self {
match Uuid::try_from(value) {
Ok(data) => return Field::Uuid(data),
Err(_) => {},
}
Field::Static(value.into()) Field::Static(value.into())
} }
} }
impl From<Uuid> for Field {
fn from(value: Uuid) -> Self {
Field::Uuid(value)
}
}
#[cfg(test)] #[cfg(test)]
mod fields { mod fields {
use super::*; use super::*;
@ -44,6 +60,7 @@ mod fields {
for data in entries { for data in entries {
match data.clone().into() { match data.clone().into() {
Field::Static(result) => assert_eq!(result, data), Field::Static(result) => assert_eq!(result, data),
_ => unreachable!("shouuld have been a static field"),
} }
} }
} }
@ -54,9 +71,40 @@ mod fields {
for data in entries { for data in entries {
match data.into() { match data.into() {
Field::Static(result) => assert_eq!(result, data), Field::Static(result) => assert_eq!(result, data),
_ => unreachable!("shouuld have been a static field"),
} }
} }
} }
#[test]
fn uuid_to_field() {
let id = Uuid::new_v4();
match id.into() {
Field::Uuid(result) => assert_eq!(result, id),
_ => unreachable!("should have been a uuid field"),
}
}
#[test]
fn uuid_string_to_field() {
let id = Uuid::new_v4();
let id_string = id.to_string();
match id_string.into() {
Field::Uuid(result) => assert_eq!(result, id),
_ => unreachable!("should have been a uuid field"),
}
}
#[test]
fn uuid_str_to_field() {
let id = Uuid::new_v4();
let id_string = id.to_string();
let id_str = id_string.as_str();
match id_str.into() {
Field::Uuid(result) => assert_eq!(result, id),
_ => unreachable!("should have been a uuid field"),
}
}
} }
struct Record { struct Record {
@ -116,6 +164,7 @@ mod records {
None => unreachable!("Should return data"), None => unreachable!("Should return data"),
Some(result) => match result { Some(result) => match result {
Field::Static(txt) => assert_eq!(txt, data), Field::Static(txt) => assert_eq!(txt, data),
_ => unreachable!("Should have been static"),
}, },
} }
} }
@ -130,6 +179,7 @@ mod records {
None => unreachable!("Should return data"), None => unreachable!("Should return data"),
Some(result) => match result { Some(result) => match result {
Field::Static(txt) => assert_eq!(txt, &data), Field::Static(txt) => assert_eq!(txt, &data),
_ => unreachable!("should have been statis"),
}, },
} }
} }
@ -229,7 +279,8 @@ mod responses {
match rec.get(col).unwrap() { match rec.get(col).unwrap() {
Field::Static(txt) => { Field::Static(txt) => {
assert_eq!(txt.clone(), fields.next().unwrap().to_string()) assert_eq!(txt.clone(), fields.next().unwrap().to_string())
} },
_ => unreachable!("should have been static"),
} }
} }
} }