# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the terms described in the LICENSE file in
# the root directory of this source tree.


from llama_stack.apis.conversations.conversations import (
    Conversation,
    ConversationCreateRequest,
    ConversationItem,
    ConversationItemList,
)


def test_conversation_create_request_defaults():
    request = ConversationCreateRequest()
    assert request.items == []
    assert request.metadata == {}


def test_conversation_model_defaults():
    conversation = Conversation(
        id="conv_123456789",
        created_at=1234567890,
        metadata=None,
        object="conversation",
    )
    assert conversation.id == "conv_123456789"
    assert conversation.object == "conversation"
    assert conversation.metadata is None


def test_openai_client_compatibility():
    from openai.types.conversations.message import Message
    from pydantic import TypeAdapter

    openai_message = Message(
        id="msg_123",
        content=[{"type": "input_text", "text": "Hello"}],
        role="user",
        status="in_progress",
        type="message",
        object="message",
    )

    adapter = TypeAdapter(ConversationItem)
    validated_item = adapter.validate_python(openai_message.model_dump())

    assert validated_item.id == "msg_123"
    assert validated_item.type == "message"


def test_conversation_item_list():
    item_list = ConversationItemList(data=[])
    assert item_list.object == "list"
    assert item_list.data == []
    assert item_list.first_id is None
    assert item_list.last_id is None
    assert item_list.has_more is False
