claude-code-api 0.1.3

OpenAI-compatible API gateway for Claude Code CLI
#[cfg(test)]
mod tests {
    use super::super::openai::*;
    use super::super::claude::*;
    
    #[test]
    fn test_chat_message_serialization() {
        let message = ChatMessage {
            role: "user".to_string(),
            content: MessageContent::Text("Hello".to_string()),
            name: None,
        };
        
        let json = serde_json::to_string(&message).unwrap();
        assert!(json.contains("\"role\":\"user\""));
        assert!(json.contains("\"content\":\"Hello\""));
    }
    
    #[test]
    fn test_claude_model_list() {
        let models = ClaudeModel::all();
        assert_eq!(models.len(), 3);
        
        let model_ids: Vec<String> = models.iter().map(|m| m.id.clone()).collect();
        assert!(model_ids.contains(&"claude-3-5-sonnet-20241022".to_string()));
        assert!(model_ids.contains(&"claude-3-opus-20240229".to_string()));
    }
    
    #[test]
    fn test_message_content_variants() {
        let text_content = MessageContent::Text("Hello".to_string());
        let array_content = MessageContent::Array(vec![
            ContentPart::Text { text: "Hello".to_string() },
            ContentPart::ImageUrl { 
                image_url: ImageUrl {
                    url: "https://example.com/image.png".to_string(),
                    detail: Some("high".to_string()),
                }
            },
        ]);
        
        let text_json = serde_json::to_string(&text_content).unwrap();
        assert_eq!(text_json, "\"Hello\"");
        
        let array_json = serde_json::to_string(&array_content).unwrap();
        assert!(array_json.contains("\"type\":\"text\""));
        assert!(array_json.contains("\"type\":\"image_url\""));
    }
}