mirror of
https://github.com/Sea-Haven-Industries/open-swe.git
synced 2026-09-30 12:43:16 +00:00
68 lines
2.6 KiB
Python
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)
|