use darling::FromMeta;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum SqlLevel {
#[default]
Full,
Trait,
None
}
impl FromMeta for SqlLevel {
fn from_string(value: &str) -> darling::Result<Self> {
match value.to_lowercase().as_str() {
"full" => Ok(SqlLevel::Full),
"trait" => Ok(SqlLevel::Trait),
"none" => Ok(SqlLevel::None),
_ => Err(darling::Error::unknown_value(value))
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_is_full() {
assert_eq!(SqlLevel::default(), SqlLevel::Full);
}
#[test]
fn from_meta_valid() {
assert_eq!(SqlLevel::from_string("full").unwrap(), SqlLevel::Full);
assert_eq!(SqlLevel::from_string("FULL").unwrap(), SqlLevel::Full);
assert_eq!(SqlLevel::from_string("trait").unwrap(), SqlLevel::Trait);
assert_eq!(SqlLevel::from_string("Trait").unwrap(), SqlLevel::Trait);
assert_eq!(SqlLevel::from_string("none").unwrap(), SqlLevel::None);
assert_eq!(SqlLevel::from_string("NONE").unwrap(), SqlLevel::None);
}
#[test]
fn from_meta_invalid() {
assert!(SqlLevel::from_string("partial").is_err());
assert!(SqlLevel::from_string("all").is_err());
assert!(SqlLevel::from_string("").is_err());
}
}