pub mod request;
pub mod response;
#[cfg(test)]
mod tests {
use crate::models::response::{DeleteResponse, Model, ModelsListResponse};
#[test]
fn test_model_deserialization() {
let json = r#"{
"id": "gpt-4o-mini",
"object": "model",
"created": 1686935002,
"owned_by": "openai"
}"#;
let model: Model = serde_json::from_str(json).expect("Should deserialize Model");
assert_eq!(model.id, "gpt-4o-mini");
assert_eq!(model.object, "model");
assert_eq!(model.created, 1686935002);
assert_eq!(model.owned_by, "openai");
}
#[test]
fn test_models_list_response_deserialization() {
let json = r#"{
"object": "list",
"data": [
{
"id": "gpt-4o-mini",
"object": "model",
"created": 1686935002,
"owned_by": "openai"
},
{
"id": "text-embedding-3-small",
"object": "model",
"created": 1705948997,
"owned_by": "openai"
}
]
}"#;
let response: ModelsListResponse = serde_json::from_str(json).expect("Should deserialize ModelsListResponse");
assert_eq!(response.object, "list");
assert_eq!(response.data.len(), 2);
assert_eq!(response.data[0].id, "gpt-4o-mini");
assert_eq!(response.data[1].id, "text-embedding-3-small");
}
#[test]
fn test_delete_response_deserialization() {
let json = r#"{
"id": "ft:gpt-4o-mini:my-org:my-suffix:abc123",
"object": "model",
"deleted": true
}"#;
let response: DeleteResponse = serde_json::from_str(json).expect("Should deserialize DeleteResponse");
assert_eq!(response.id, "ft:gpt-4o-mini:my-org:my-suffix:abc123");
assert_eq!(response.object, "model");
assert!(response.deleted);
}
#[test]
fn test_model_serialization() {
let model = Model { id: "gpt-4o-mini".to_string(), object: "model".to_string(), created: 1686935002, owned_by: "openai".to_string() };
let json = serde_json::to_string(&model).expect("Should serialize Model");
assert!(json.contains("\"id\":\"gpt-4o-mini\""));
assert!(json.contains("\"object\":\"model\""));
}
}