use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ModelInfo {
pub name: String,
pub description: String,
pub release_date: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ModelsResponse {
pub models: Vec<ModelInfo>,
}
impl ModelsResponse {
pub fn new(models: Vec<ModelInfo>) -> Self {
Self { models }
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn serializes_to_jev_shape() {
let resp = ModelsResponse::new(vec![ModelInfo {
name: "mock".into(),
description: "A mock engine for testing".into(),
release_date: "2026-01-01".into(),
}]);
let v: serde_json::Value = serde_json::to_value(&resp).unwrap();
assert_eq!(v["models"][0]["name"], "mock");
assert_eq!(v["models"][0]["description"], "A mock engine for testing");
assert_eq!(v["models"][0]["release_date"], "2026-01-01");
assert!(v.get("data").is_none());
assert!(v.get("object").is_none());
}
}