gemini-client-api 7.4.5

Library to use Google Gemini API. Automatic context management, schema generation, function calling and more.
Documentation
use crate::gemini::types::caching::{CachedContent, CachedContentBuilder};
use serde_json::json;

#[test]
fn test_cached_content_serialization() {
    let cached_content = CachedContentBuilder::new("gemini-2.5-flash")
        .build()
        .unwrap();
    let json = serde_json::to_value(&cached_content).unwrap();
    assert_eq!(json["model"], "models/gemini-2.5-flash");
}

#[test]
fn test_cached_content_deserialization() {
    let json_data = json!({
        "name": "cachedContents/12345",
        "displayName": "Test Cache",
        "model": "models/gemini-2.5-flash",
        "createTime": "2024-01-01T00:00:00Z",
        "updateTime": "2024-01-01T00:00:00Z",
        "expireTime": "2024-01-02T00:00:00Z",
        "ttl": "86400s"
    });

    let cached_content: CachedContent = serde_json::from_value(json_data).unwrap();
    assert_eq!(
        cached_content.name().as_ref().unwrap(),
        "cachedContents/12345"
    );
    assert_eq!(
        cached_content.display_name().as_ref().unwrap(),
        "Test Cache"
    );
    assert_eq!(cached_content.model(), "models/gemini-2.5-flash");
    assert_eq!(cached_content.ttl().as_ref().unwrap(), "86400s");
}