cf-chat-engine 0.2.1

Chat Engine module: multi-tenant conversational infrastructure with plugin-driven backends
Documentation
use super::*;
use crate::domain::message::{Message, MessageRole};
use crate::domain::service::variant_service::VariantEntry;
use chat_engine_sdk::models::VariantInfo;
use time::OffsetDateTime;

#[test]
fn list_variants_response_converts_from_listing() {
    let m1 = Message {
        message_id: Uuid::nil(),
        session_id: Uuid::nil(),
        tenant_id: None,
        user_id: None,
        parent_message_id: None,
        variant_index: 0,
        is_active: true,
        role: MessageRole::Assistant,
        parts: vec![MessagePart::text(Uuid::nil(), Uuid::nil(), 0, "hi")],
        file_ids: vec![],
        metadata: None,
        is_complete: true,
        is_hidden_from_user: false,
        is_hidden_from_backend: false,
        created_at: OffsetDateTime::UNIX_EPOCH,
        updated_at: OffsetDateTime::UNIX_EPOCH,
    };
    let info = VariantInfo {
        message_id: Uuid::nil(),
        variant_index: 0,
        total_variants: 1,
        is_active: true,
    };
    let listing = VariantListing {
        variants: vec![VariantEntry { message: m1, info }],
        current_index: Some(0),
    };
    let resp: ListVariantsResponse = listing.into();
    assert_eq!(resp.current_index, Some(0));
    assert_eq!(resp.variants.len(), 1);
    assert!(resp.variants[0].is_active);
    assert_eq!(resp.variants[0].variant_index, 0);
}