65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
from __future__ import annotations
|
|
|
|
from types import SimpleNamespace
|
|
|
|
import pytest
|
|
from yuxi.agents.backends.knowledge_base_backend import resolve_visible_knowledge_bases_for_context
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_resolve_visible_knowledge_bases_for_context_filters_by_enabled_names(monkeypatch) -> None:
|
|
async def _fake_get_databases_by_raw_id(user_id: int) -> dict:
|
|
assert user_id == 7
|
|
return {"databases": [{"db_id": "db-1", "name": "Alpha"}, {"db_id": "db-2", "name": "Beta"}]}
|
|
|
|
monkeypatch.setattr(
|
|
"yuxi.agents.backends.knowledge_base_backend.knowledge_base.get_databases_by_raw_id",
|
|
_fake_get_databases_by_raw_id,
|
|
)
|
|
|
|
context = SimpleNamespace(user_id="7", knowledges=["Beta"])
|
|
visible = await resolve_visible_knowledge_bases_for_context(context)
|
|
|
|
assert visible == [{"db_id": "db-2", "name": "Beta"}]
|
|
assert getattr(context, "_visible_knowledge_bases") == visible
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_resolve_visible_knowledge_bases_for_context_defaults_to_all_accessible(monkeypatch) -> None:
|
|
databases = [{"db_id": "db-1", "name": "Alpha"}, {"db_id": "db-2", "name": "Beta"}]
|
|
|
|
async def _fake_get_databases_by_raw_id(user_id: int) -> dict:
|
|
assert user_id == 7
|
|
return {"databases": databases}
|
|
|
|
monkeypatch.setattr(
|
|
"yuxi.agents.backends.knowledge_base_backend.knowledge_base.get_databases_by_raw_id",
|
|
_fake_get_databases_by_raw_id,
|
|
)
|
|
|
|
context = SimpleNamespace(user_id="7", knowledges=None)
|
|
visible = await resolve_visible_knowledge_bases_for_context(context)
|
|
|
|
assert visible == databases
|
|
assert getattr(context, "_visible_knowledge_bases") == databases
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_resolve_visible_knowledge_bases_for_context_handles_missing_user() -> None:
|
|
context = SimpleNamespace(user_id="", knowledges=None)
|
|
|
|
visible = await resolve_visible_knowledge_bases_for_context(context)
|
|
|
|
assert visible == []
|
|
assert getattr(context, "_visible_knowledge_bases") == []
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_resolve_visible_knowledge_bases_for_context_handles_invalid_user() -> None:
|
|
context = SimpleNamespace(user_id="not-a-number", knowledges=None)
|
|
|
|
visible = await resolve_visible_knowledge_bases_for_context(context)
|
|
|
|
assert visible == []
|
|
assert getattr(context, "_visible_knowledge_bases") == []
|