Add unit tests for all types and error handling
54 tests covering serialization/deserialization round-trips, builder patterns, skip_serializing_if behavior, untagged enums, field renames, and error type conversions. Test modules added to: - types/common.rs: Think, Stop, Options, OptionsBuilder, ModelDetails - types/generate.rs: GenerateRequest, GenerateResponse, builder - types/chat.rs: Role, Message, ChatRequest, Tool, ChatResponse - types/pull.rs: PullRequest, PullResponse, builder - types/version.rs: VersionResponse - types/tags.rs: TagsResponse - types/ps.rs: PsResponse - error.rs: Display formatting, From conversions, Error trait
This commit is contained in:
@@ -45,3 +45,51 @@ impl PullRequestBuilder {
|
||||
pub struct PullResponse {
|
||||
pub status: String,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use serde_json::json;
|
||||
|
||||
#[test]
|
||||
fn builder_minimal() {
|
||||
let request = PullRequest::builder("llama3").build();
|
||||
assert_eq!(request.model, "llama3");
|
||||
assert!(request.insecure.is_none());
|
||||
assert!(request.stream.is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn builder_with_options() {
|
||||
let request = PullRequest::builder("llama3")
|
||||
.stream(true)
|
||||
.insecure(false)
|
||||
.build();
|
||||
assert_eq!(request.stream, Some(true));
|
||||
assert_eq!(request.insecure, Some(false));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn request_skips_none_fields() {
|
||||
let request = PullRequest::builder("llama3").build();
|
||||
let json = serde_json::to_value(&request).unwrap();
|
||||
let obj = json.as_object().unwrap();
|
||||
assert!(obj.contains_key("model"));
|
||||
assert!(!obj.contains_key("insecure"));
|
||||
assert!(!obj.contains_key("stream"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn request_includes_set_fields() {
|
||||
let request = PullRequest::builder("llama3").stream(true).build();
|
||||
let json = serde_json::to_value(&request).unwrap();
|
||||
assert_eq!(json, json!({"model": "llama3", "stream": true}));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn response_deserialize() {
|
||||
let json = json!({"status": "pulling manifest"});
|
||||
let response: PullResponse = serde_json::from_value(json).unwrap();
|
||||
assert_eq!(response.status, "pulling manifest");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user