mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-14 20:16:48 +00:00
feat: improved compatability layer and responses api handing
This commit is contained in:
1 parent
3e978759de
commit
0adf88abed
45 files changed
+2566
-337
No files matched your search
@@ -4,6 +4,8 @@ from contextlib import contextmanager
|
||||
from unittest.mock import patch
|
||||
from uuid import uuid4
|
||||
|
||||
import pytest
|
||||
from sqlalchemy import text
|
||||
|
||||
|
||||
@contextmanager
|
||||
@@ -161,6 +163,68 @@ class TestContinuationServiceSaveLoad:
|
||||
)
|
||||
assert got is None
|
||||
|
||||
def test_claim_state_is_atomic_and_duplicate_is_conflict(self, pg_conn):
|
||||
from application.api.answer.services.continuation_service import (
|
||||
ContinuationService,
|
||||
ResumeInProgressError,
|
||||
)
|
||||
from application.storage.db.repositories.conversations import (
|
||||
ConversationsRepository,
|
||||
)
|
||||
|
||||
user = "u-claim"
|
||||
conv = ConversationsRepository(pg_conn).create(user, name="c")
|
||||
conv_id = str(conv["id"])
|
||||
service = ContinuationService()
|
||||
with _patch_db(pg_conn):
|
||||
service.save_state(
|
||||
conversation_id=conv_id,
|
||||
user=user,
|
||||
messages=[],
|
||||
pending_tool_calls=[{"call_id": "call-1"}],
|
||||
tools_dict={},
|
||||
tool_schemas=[],
|
||||
agent_config={"agent_id": "agent-a"},
|
||||
)
|
||||
claimed = service.claim_state(conv_id, user)
|
||||
assert claimed is not None
|
||||
assert claimed["status"] == "resuming"
|
||||
with pytest.raises(ResumeInProgressError):
|
||||
service.claim_state(conv_id, user)
|
||||
|
||||
def test_expired_state_is_neither_loaded_nor_claimed(self, pg_conn):
|
||||
from application.api.answer.services.continuation_service import (
|
||||
ContinuationService,
|
||||
)
|
||||
from application.storage.db.repositories.conversations import (
|
||||
ConversationsRepository,
|
||||
)
|
||||
|
||||
user = "u-expired"
|
||||
conv = ConversationsRepository(pg_conn).create(user, name="c")
|
||||
conv_id = str(conv["id"])
|
||||
service = ContinuationService()
|
||||
with _patch_db(pg_conn):
|
||||
service.save_state(
|
||||
conversation_id=conv_id,
|
||||
user=user,
|
||||
messages=[],
|
||||
pending_tool_calls=[{"call_id": "call-1"}],
|
||||
tools_dict={},
|
||||
tool_schemas=[],
|
||||
agent_config={},
|
||||
)
|
||||
pg_conn.execute(
|
||||
text(
|
||||
"UPDATE pending_tool_state "
|
||||
"SET expires_at = clock_timestamp() - interval '1 second' "
|
||||
"WHERE conversation_id = CAST(:conv AS uuid)"
|
||||
),
|
||||
{"conv": conv_id},
|
||||
)
|
||||
assert service.load_state(conv_id, user) is None
|
||||
assert service.claim_state(conv_id, user) is None
|
||||
|
||||
def test_save_state_no_client_tools(self, pg_conn):
|
||||
from application.api.answer.services.continuation_service import (
|
||||
ContinuationService,
|
||||
|
||||
Reference in new issue
Block a user