use serde::{Serialize, Serializer};
use crate::classify::Category;
impl Serialize for Category {
fn serialize<S: Serializer>(&self, ser: S) -> Result<S::Ok, S::Error> {
ser.serialize_str(self.label())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn serializes_to_snake_case_label() {
assert_eq!(
serde_json::to_string(&Category::Cache).unwrap(),
"\"cache\""
);
assert_eq!(
serde_json::to_string(&Category::VmImage).unwrap(),
"\"vm_image\""
);
assert_eq!(
serde_json::to_string(&Category::ModelCache).unwrap(),
"\"model_cache\""
);
}
#[test]
fn every_variant_serializes_to_its_label() {
for &c in Category::ALL {
let json = serde_json::to_string(&c).unwrap();
assert_eq!(json, format!("\"{}\"", c.label()));
}
}
}