use html_translation_lib::{TranslationConfig, HtmlTranslator};
#[cfg(test)]
mod integration_tests {
use super::*;
#[tokio::test]
async fn test_translator_creation() {
let config = TranslationConfig::new()
.target_language("zh")
.api_url("http://mock-service.com/translate")
.enable_cache(false);
let translator = HtmlTranslator::new(config).await;
assert!(translator.is_ok());
}
#[tokio::test]
async fn test_config_validation() {
let valid_config = TranslationConfig::new()
.target_language("en")
.api_url("http://example.com");
assert!(valid_config.validate().is_ok());
let invalid_config = TranslationConfig::new()
.target_language("") .api_url("http://example.com");
assert!(invalid_config.validate().is_err());
}
#[tokio::test]
async fn test_html_parsing() {
let config = TranslationConfig::new()
.target_language("zh")
.api_url("http://mock-service.com/translate")
.enable_cache(false);
let mut translator = HtmlTranslator::new(config).await.unwrap();
let simple_html = "<html><body><h1>Test</h1></body></html>";
let result = translator.translate_html(simple_html).await;
if let Err(error) = result {
assert!(!error.to_string().contains("HTML解析错误"));
}
}
#[test]
fn test_library_info() {
use html_translation_lib::get_library_info;
let info = get_library_info();
assert_eq!(info.name, "html-translation-lib");
assert_eq!(info.version, "0.1.0");
assert!(!info.features.is_empty());
}
#[test]
fn test_error_types() {
use html_translation_lib::TranslationError;
let service_error = TranslationError::service_error("test");
assert!(service_error.is_retryable());
let config_error = TranslationError::config_error("test");
assert!(!config_error.is_retryable());
let network_error = TranslationError::network_error("test");
assert!(network_error.is_retryable());
}
#[test]
fn test_translation_stats() {
use html_translation_lib::core::TranslationStats;
let mut stats = TranslationStats::default();
stats.cache_hits = 8;
stats.cache_misses = 2;
assert_eq!(stats.cache_hit_rate(), 0.8);
stats.texts_filtered = 100;
stats.batches_created = 5;
assert_eq!(stats.average_batch_size(), 20.0);
}
#[cfg(feature = "sync")]
#[test]
fn test_sync_interface_exists() {
use html_translation_lib::translate_html_content_sync;
let result = translate_html_content_sync(
"<p>test</p>",
"zh",
Some("http://nonexistent.invalid/translate")
);
if let Err(error) = result {
assert!(error.to_string().contains("网络") || error.to_string().contains("服务") || error.to_string().contains("超时"));
} else {
}
}
}