use crate::error::ProviderError;
use crate::{http_client, provider_response};
use http::StatusCode;
#[test]
fn audio_generation_error_provider_response_helpers_with_preserved_json_body() {
let body = r#"{"error":{"message":"invalid voice"}}"#;
let error = ProviderError::ProviderResponse(
provider_response::ProviderResponseError::without_status(body.to_string()),
);
assert_eq!(error.provider_response_body(), Some(body));
assert_eq!(error.provider_response_status(), None);
assert_eq!(
error.provider_response_json().expect("valid JSON"),
Some(serde_json::json!({ "error": { "message": "invalid voice" } }))
);
}
#[test]
fn audio_generation_error_provider_response_helpers_with_http_non_success() {
let body = r#"{"error":{"message":"bad request"}}"#;
let error = ProviderError::from_transport_error(http_client::Error::non_success_with_details(
StatusCode::BAD_REQUEST,
http::HeaderMap::new(),
body.to_string(),
));
assert_eq!(error.provider_response_body(), Some(body));
assert_eq!(
error.provider_response_status(),
Some(StatusCode::BAD_REQUEST)
);
assert_eq!(
error.provider_response_json().expect("valid JSON"),
Some(serde_json::json!({ "error": { "message": "bad request" } }))
);
}
#[test]
fn audio_generation_error_provider_error_is_not_a_provider_response() {
let error = ProviderError::Provider("internal diagnostic".to_string());
assert_eq!(error.provider_response_body(), None);
assert_eq!(error.provider_response_status(), None);
assert_eq!(error.provider_response_json().expect("no body"), None);
}