mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-28 13:26:48 +00:00
* fix(channels): wire channel→agent handler and fix Telegram send pipeline * format code * add supported tests
105 lines
2.9 KiB
Python
105 lines
2.9 KiB
Python
"""Tests for server Pydantic models."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
pydantic = pytest.importorskip("pydantic")
|
|
|
|
from openjarvis.server.models import ( # noqa: E402
|
|
ChatCompletionChunk,
|
|
ChatCompletionRequest,
|
|
ChatCompletionResponse,
|
|
ChatMessage,
|
|
Choice,
|
|
ChoiceMessage,
|
|
DeltaMessage,
|
|
ModelListResponse,
|
|
ModelObject,
|
|
StreamChoice,
|
|
UsageInfo,
|
|
)
|
|
|
|
|
|
class TestChatCompletionRequest:
|
|
def test_minimal(self):
|
|
req = ChatCompletionRequest(
|
|
model="test-model",
|
|
messages=[ChatMessage(role="user", content="Hello")],
|
|
)
|
|
assert req.model == "test-model"
|
|
assert len(req.messages) == 1
|
|
assert req.temperature == 0.7
|
|
assert req.stream is False
|
|
|
|
def test_with_options(self):
|
|
req = ChatCompletionRequest(
|
|
model="test",
|
|
messages=[ChatMessage(role="user", content="Hi")],
|
|
temperature=0.1,
|
|
max_tokens=256,
|
|
stream=True,
|
|
)
|
|
assert req.temperature == 0.1
|
|
assert req.max_tokens == 256
|
|
assert req.stream is True
|
|
|
|
|
|
class TestChatCompletionResponse:
|
|
def test_defaults(self):
|
|
resp = ChatCompletionResponse(
|
|
model="test",
|
|
choices=[Choice(message=ChoiceMessage(content="Hi"))],
|
|
)
|
|
assert resp.object == "chat.completion"
|
|
assert resp.id.startswith("chatcmpl-")
|
|
assert resp.created > 0
|
|
assert len(resp.choices) == 1
|
|
|
|
def test_usage(self):
|
|
resp = ChatCompletionResponse(
|
|
model="test",
|
|
choices=[Choice(message=ChoiceMessage(content="Hi"))],
|
|
usage=UsageInfo(prompt_tokens=5, completion_tokens=3, total_tokens=8),
|
|
)
|
|
assert resp.usage.total_tokens == 8
|
|
|
|
|
|
class TestChatCompletionChunk:
|
|
def test_defaults(self):
|
|
chunk = ChatCompletionChunk(
|
|
id="test-id",
|
|
model="test",
|
|
choices=[StreamChoice(delta=DeltaMessage(content="Hi"))],
|
|
)
|
|
assert chunk.object == "chat.completion.chunk"
|
|
assert chunk.choices[0].delta.content == "Hi"
|
|
|
|
|
|
class TestModelListResponse:
|
|
def test_empty(self):
|
|
resp = ModelListResponse()
|
|
assert resp.object == "list"
|
|
assert resp.data == []
|
|
|
|
def test_with_models(self):
|
|
resp = ModelListResponse(
|
|
data=[
|
|
ModelObject(id="model-a"),
|
|
ModelObject(id="model-b"),
|
|
]
|
|
)
|
|
assert len(resp.data) == 2
|
|
assert resp.data[0].id == "model-a"
|
|
assert resp.data[0].object == "model"
|
|
|
|
|
|
class TestChatMessage:
|
|
def test_user_message(self):
|
|
msg = ChatMessage(role="user", content="Hello")
|
|
assert msg.role == "user"
|
|
|
|
def test_with_tool_call_id(self):
|
|
msg = ChatMessage(role="tool", content="result", tool_call_id="abc")
|
|
assert msg.tool_call_id == "abc"
|