100 lines
2.8 KiB
Python
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"
|
|
|
|
|