mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
Python: Rebase durable task feature branch with main (#2806)
This commit is contained in:
committed by
GitHub
Unverified
parent
a48a8dd524
commit
87a38bc7da
@@ -338,7 +338,7 @@ class TestMem0ProviderModelInvoking:
|
||||
mock_mem0_client.search.assert_called_once()
|
||||
call_args = mock_mem0_client.search.call_args
|
||||
assert call_args.kwargs["query"] == "What's the weather?"
|
||||
assert call_args.kwargs["user_id"] == "user123"
|
||||
assert call_args.kwargs["filters"] == {"user_id": "user123"}
|
||||
|
||||
assert isinstance(context, Context)
|
||||
expected_instructions = (
|
||||
@@ -373,8 +373,7 @@ class TestMem0ProviderModelInvoking:
|
||||
await provider.invoking(message)
|
||||
|
||||
call_args = mock_mem0_client.search.call_args
|
||||
assert call_args.kwargs["agent_id"] == "agent123"
|
||||
assert call_args.kwargs["user_id"] is None
|
||||
assert call_args.kwargs["filters"] == {"agent_id": "agent123"}
|
||||
|
||||
async def test_model_invoking_with_scope_to_per_operation_thread_id(self, mock_mem0_client: AsyncMock) -> None:
|
||||
"""Test invoking with scope_to_per_operation_thread_id enabled."""
|
||||
@@ -392,7 +391,7 @@ class TestMem0ProviderModelInvoking:
|
||||
await provider.invoking(message)
|
||||
|
||||
call_args = mock_mem0_client.search.call_args
|
||||
assert call_args.kwargs["run_id"] == "operation_thread"
|
||||
assert call_args.kwargs["filters"] == {"user_id": "user123", "run_id": "operation_thread"}
|
||||
|
||||
async def test_model_invoking_no_memories_returns_none_instructions(self, mock_mem0_client: AsyncMock) -> None:
|
||||
"""Test that no memories returns context with None instructions."""
|
||||
@@ -510,3 +509,87 @@ class TestMem0ProviderValidation:
|
||||
|
||||
# Should not raise exception even with different thread ID
|
||||
provider._validate_per_operation_thread_id("different_thread")
|
||||
|
||||
|
||||
class TestMem0ProviderBuildFilters:
|
||||
"""Test the _build_filters method."""
|
||||
|
||||
def test_build_filters_with_user_id_only(self, mock_mem0_client: AsyncMock) -> None:
|
||||
"""Test building filters with only user_id."""
|
||||
provider = Mem0Provider(user_id="user123", mem0_client=mock_mem0_client)
|
||||
|
||||
filters = provider._build_filters()
|
||||
assert filters == {"user_id": "user123"}
|
||||
|
||||
def test_build_filters_with_all_parameters(self, mock_mem0_client: AsyncMock) -> None:
|
||||
"""Test building filters with all initialization parameters."""
|
||||
provider = Mem0Provider(
|
||||
user_id="user123",
|
||||
agent_id="agent456",
|
||||
thread_id="thread789",
|
||||
application_id="app999",
|
||||
mem0_client=mock_mem0_client,
|
||||
)
|
||||
|
||||
filters = provider._build_filters()
|
||||
assert filters == {
|
||||
"user_id": "user123",
|
||||
"agent_id": "agent456",
|
||||
"run_id": "thread789",
|
||||
"app_id": "app999",
|
||||
}
|
||||
|
||||
def test_build_filters_excludes_none_values(self, mock_mem0_client: AsyncMock) -> None:
|
||||
"""Test that None values are excluded from filters."""
|
||||
provider = Mem0Provider(
|
||||
user_id="user123",
|
||||
agent_id=None,
|
||||
thread_id=None,
|
||||
application_id=None,
|
||||
mem0_client=mock_mem0_client,
|
||||
)
|
||||
|
||||
filters = provider._build_filters()
|
||||
assert filters == {"user_id": "user123"}
|
||||
assert "agent_id" not in filters
|
||||
assert "run_id" not in filters
|
||||
assert "app_id" not in filters
|
||||
|
||||
def test_build_filters_with_per_operation_thread_id(self, mock_mem0_client: AsyncMock) -> None:
|
||||
"""Test that per-operation thread ID takes precedence over base thread_id."""
|
||||
provider = Mem0Provider(
|
||||
user_id="user123",
|
||||
thread_id="base_thread",
|
||||
scope_to_per_operation_thread_id=True,
|
||||
mem0_client=mock_mem0_client,
|
||||
)
|
||||
provider._per_operation_thread_id = "operation_thread"
|
||||
|
||||
filters = provider._build_filters()
|
||||
assert filters == {
|
||||
"user_id": "user123",
|
||||
"run_id": "operation_thread", # Per-operation thread, not base_thread
|
||||
}
|
||||
|
||||
def test_build_filters_uses_base_thread_when_no_per_operation(self, mock_mem0_client: AsyncMock) -> None:
|
||||
"""Test that base thread_id is used when per-operation thread is not set."""
|
||||
provider = Mem0Provider(
|
||||
user_id="user123",
|
||||
thread_id="base_thread",
|
||||
scope_to_per_operation_thread_id=True,
|
||||
mem0_client=mock_mem0_client,
|
||||
)
|
||||
# _per_operation_thread_id is None
|
||||
|
||||
filters = provider._build_filters()
|
||||
assert filters == {
|
||||
"user_id": "user123",
|
||||
"run_id": "base_thread", # Falls back to base thread_id
|
||||
}
|
||||
|
||||
def test_build_filters_returns_empty_dict_when_no_parameters(self, mock_mem0_client: AsyncMock) -> None:
|
||||
"""Test that _build_filters returns an empty dict when no parameters are set."""
|
||||
provider = Mem0Provider(mem0_client=mock_mem0_client)
|
||||
|
||||
filters = provider._build_filters()
|
||||
assert filters == {}
|
||||
|
||||
Reference in New Issue
Block a user