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)