#[cfg(test)]
mod tests {
use crate::claude::ClaudeClient;
use std::env;
use std::sync::Mutex;
use once_cell::sync::Lazy;
static ENV_MUTEX: Lazy<Mutex<()>> = Lazy::new(|| Mutex::new(()));
#[test]
fn test_claude_client_new_no_api_key() {
let _lock = ENV_MUTEX.lock().unwrap();
env::remove_var("ANTHROPIC_API_KEY");
let client = ClaudeClient::new();
assert!(client.is_err());
}
#[test]
fn test_claude_client_new() {
let _lock = ENV_MUTEX.lock().unwrap();
env::remove_var("ANTHROPIC_API_KEY");
env::set_var("ANTHROPIC_API_KEY", "test_api_key");
let client = ClaudeClient::new();
assert!(client.is_ok());
env::remove_var("ANTHROPIC_API_KEY");
}
#[tokio::test]
async fn test_claude_client_send_message() {
let _lock = ENV_MUTEX.lock().unwrap();
env::remove_var("ANTHROPIC_API_KEY");
env::set_var("ANTHROPIC_API_KEY", "test_api_key");
let client = ClaudeClient::new().unwrap();
let result = client
.send_message(Some("claude-2"), "", "hello")
.await;
assert!(result.is_err());
env::remove_var("ANTHROPIC_API_KEY");
}
#[tokio::test]
async fn test_claude_client_list_models() {
let _lock = ENV_MUTEX.lock().unwrap();
env::remove_var("ANTHROPIC_API_KEY");
env::set_var("ANTHROPIC_API_KEY", "test_api_key");
let client = ClaudeClient::new().unwrap();
let result = client.list_models().await;
assert!(result.is_err());
env::remove_var("ANTHROPIC_API_KEY");
}
}