rig-core 0.44.0

An opinionated library for building LLM powered applications.
Documentation
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);
}