open-swe/tests/dashboard/test_auto_verdict_settings.py

68 lines
2.6 KiB
Python

from __future__ import annotations
from types import SimpleNamespace
from unittest.mock import AsyncMock
import pytest
from agent.dashboard import auto_verdict_repos, routes, team_settings
@pytest.mark.asyncio
async def test_team_auto_verdict_defaults_off(monkeypatch: pytest.MonkeyPatch) -> None:
store = SimpleNamespace(get_item=AsyncMock(return_value=None))
monkeypatch.setattr(team_settings, "_client", lambda: SimpleNamespace(store=store))
assert await team_settings.get_team_auto_verdict_enabled() is False
@pytest.mark.asyncio
async def test_team_auto_verdict_reads_enabled_setting(monkeypatch: pytest.MonkeyPatch) -> None:
store = SimpleNamespace(get_item=AsyncMock(return_value={"value": {"auto_verdict": True}}))
monkeypatch.setattr(team_settings, "_client", lambda: SimpleNamespace(store=store))
assert await team_settings.get_team_auto_verdict_enabled() is True
@pytest.mark.asyncio
async def test_auto_verdict_repo_list_is_default_off_and_editable(
monkeypatch: pytest.MonkeyPatch,
) -> None:
saved: dict[str, object] = {}
store = SimpleNamespace(
get_item=AsyncMock(return_value=None),
put_item=AsyncMock(
side_effect=lambda namespace, key, value: saved.update(
{"namespace": namespace, "key": key, "value": value}
)
),
)
monkeypatch.setattr(auto_verdict_repos, "_client", lambda: SimpleNamespace(store=store))
assert await auto_verdict_repos.list_auto_verdict_repos() == []
repos = await auto_verdict_repos.set_auto_verdict_repo_enabled("Acme/Repo", True)
assert repos == ["Acme/Repo"]
assert saved["namespace"] == auto_verdict_repos.AUTO_VERDICT_REPOS_NAMESPACE
assert saved["key"] == auto_verdict_repos.AUTO_VERDICT_REPOS_KEY
value = saved["value"]
assert isinstance(value, dict)
assert value["repos"] == ["Acme/Repo"]
@pytest.mark.asyncio
async def test_auto_verdict_dashboard_endpoints(monkeypatch: pytest.MonkeyPatch) -> None:
list_repos = AsyncMock(return_value=["acme/repo"])
set_repo = AsyncMock(return_value=["acme/repo", "acme/widgets"])
monkeypatch.setattr(routes, "list_auto_verdict_repos", list_repos)
monkeypatch.setattr(routes, "set_auto_verdict_repo_enabled", set_repo)
listed = await routes.api_list_auto_verdict_repos({})
updated = await routes.api_set_auto_verdict_repo(
routes.AutoVerdictRepoUpdate(full_name="acme/widgets", enabled=True),
{},
)
assert listed == {"repos": ["acme/repo"]}
assert updated == {"repos": ["acme/repo", "acme/widgets"]}
set_repo.assert_awaited_once_with("acme/widgets", True)