use crate::builder::LlmBuilder;
use crate::providers::openai_compatible::builder::OpenAiCompatibleBuilder;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_base_url_method_exists() {
let builder = LlmBuilder::new();
let openai_compatible_builder = OpenAiCompatibleBuilder::new(builder, "deepseek");
let builder_with_url = openai_compatible_builder.base_url("https://custom-server.com/v1");
assert!(std::mem::size_of_val(&builder_with_url) > 0);
}
#[test]
fn test_base_url_chaining() {
let builder = LlmBuilder::new();
let result = OpenAiCompatibleBuilder::new(builder, "deepseek")
.api_key("test-key")
.base_url("https://custom-server.com/v1")
.model("deepseek-chat")
.temperature(0.7);
assert!(std::mem::size_of_val(&result) > 0);
}
#[test]
fn test_base_url_accepts_string_types() {
let builder1 = LlmBuilder::new();
let builder2 = LlmBuilder::new();
let builder3 = LlmBuilder::new();
let _result1 =
OpenAiCompatibleBuilder::new(builder1, "deepseek").base_url("https://example.com/v1");
let url = String::from("https://example.com/v1");
let _result2 = OpenAiCompatibleBuilder::new(builder2, "deepseek").base_url(url);
let url_ref = "https://example.com/v1";
let _result3 = OpenAiCompatibleBuilder::new(builder3, "deepseek").base_url(url_ref);
}
#[tokio::test]
async fn test_base_url_integration_with_build() {
let builder = LlmBuilder::new();
let openai_compatible_builder = OpenAiCompatibleBuilder::new(builder, "deepseek")
.base_url("https://custom-deepseek-server.com/v1")
.api_key("test-key")
.model("deepseek-chat");
let result = openai_compatible_builder.build().await;
assert!(
result.is_ok(),
"Build should succeed with valid configuration"
);
let _client = result.unwrap();
}
#[test]
fn test_base_url_documentation_examples() {
let builder1 = LlmBuilder::new();
let _client_builder1 = builder1
.deepseek()
.api_key("your-api-key")
.base_url("https://my-deepseek-server.com/v1")
.model("deepseek-chat");
let builder2 = LlmBuilder::new();
let _client_builder2 = builder2
.openrouter()
.api_key("your-api-key")
.base_url("https://openrouter.ai/api/v1")
.model("openai/gpt-4");
}
#[test]
fn test_base_url_empty_string() {
let builder = LlmBuilder::new();
let _result = OpenAiCompatibleBuilder::new(builder, "deepseek").base_url("");
}
#[test]
fn test_base_url_with_trailing_slash() {
let builder = LlmBuilder::new();
let _result =
OpenAiCompatibleBuilder::new(builder, "deepseek").base_url("https://example.com/v1/");
}
#[test]
fn test_base_url_with_different_protocols() {
let builder1 = LlmBuilder::new();
let builder2 = LlmBuilder::new();
let builder3 = LlmBuilder::new();
let _result1 =
OpenAiCompatibleBuilder::new(builder1, "deepseek").base_url("https://example.com/v1");
let _result2 =
OpenAiCompatibleBuilder::new(builder2, "deepseek").base_url("http://localhost:8080/v1");
let _result3 = OpenAiCompatibleBuilder::new(builder3, "deepseek")
.base_url("https://example.com:8443/v1");
}
}