Files
more_dots/tests/test_chat_message_request_schema.py
T
2026-03-24 18:07:22 +08:00

100 lines
2.8 KiB
Python

from schemas.agent_input import AgentInput
from schemas.chat_message_request import ChatMessageRequestDTO
from schemas.stream_input import StreamInputDTO
def test_chat_message_request_accepts_frontend_dto_shape():
payload = ChatMessageRequestDTO(
query="查询 SO 4020438779 的 eta 信息",
inputs={"region": "ANZ", "filters": ["top10"]},
response_mode="streaming",
user="tester-001",
conversation_id="cid-123",
files=[{"type": "image", "transfer_method": "remote_url", "url": "https://example.com/a.png"}],
)
assert payload.query == "查询 SO 4020438779 的 eta 信息"
assert payload.inputs == {"region": "ANZ", "filters": ["top10"]}
assert payload.response_mode == "streaming"
assert payload.user == "tester-001"
assert payload.conversation_id == "cid-123"
assert payload.files[0].model_dump()["type"] == "image"
def test_chat_message_request_defaults_inputs_and_files():
payload = ChatMessageRequestDTO(
query="hello",
response_mode="blocking",
user="tester-002",
)
assert payload.inputs == {}
assert payload.files == []
assert payload.conversation_id is None
def test_chat_message_request_accepts_non_dict_inputs_object():
payload = ChatMessageRequestDTO(
query="hello",
inputs=[{"name": "foo"}],
response_mode="streaming",
user="tester-003",
)
assert payload.inputs == [{"name": "foo"}]
def test_chat_message_request_allows_nullable_java_dto_fields():
payload = ChatMessageRequestDTO()
assert payload.query is None
assert payload.response_mode is None
assert payload.user is None
assert payload.conversation_id is None
assert payload.inputs == {}
assert payload.files == []
def test_chat_message_request_accepts_legacy_auto_generate_name_field():
payload = ChatMessageRequestDTO(
query="hello",
response_mode="streaming",
user="tester-legacy",
auto_generate_name=True,
)
assert payload.auto_generate_name is True
assert payload.query == "hello"
def test_agent_input_uses_same_schema_as_chat_message_request():
payload = AgentInput(
query="hello",
response_mode="blocking",
user="tester-004",
inputs={"k": "v"},
files=[{"type": "text"}],
)
assert isinstance(payload, ChatMessageRequestDTO)
assert payload.inputs == {"k": "v"}
assert payload.files[0].model_dump()["type"] == "text"
def test_stream_input_uses_same_schema_as_chat_message_request():
payload = StreamInputDTO(
query="hello",
response_mode="streaming",
user="tester-005",
inputs={"region": "ANZ"},
)
assert isinstance(payload, ChatMessageRequestDTO)
assert payload.response_mode == "streaming"
assert payload.user == "tester-005"