from activity_core.context_resolvers import repo_scoping class Response: def __init__(self, body): self.body = body def raise_for_status(self): return None def json(self): return self.body def test_repo_scoping_context_resolver_calls_scope_context_endpoint(monkeypatch): calls = [] body = { "repo_slug": "repo-scoping", "capabilities": ["Generate SCOPE.md"], "tags": ["api", "scope"], "scope_md_exists": True, "scope_summary": "Maps repositories into reviewable context.", } def fake_get(url, timeout): calls.append((url, timeout)) return Response(body) repo_scoping._CACHE.clear() monkeypatch.setattr(repo_scoping, "_REPO_SCOPING_URL", "http://repo-scoping.local/") monkeypatch.setattr(repo_scoping.httpx, "get", fake_get) resolver = repo_scoping.RepoScopingContextResolver() result = resolver.resolve( "repo_profile", None, {"repo_slug": "repo-scoping"}, ) assert result == body assert calls == [ ( "http://repo-scoping.local/repos/repo-scoping/scope/context", 10.0, ) ] cached = resolver.resolve( "repo_profile", None, {"repo_slug": "repo-scoping"}, ) assert cached == body assert len(calls) == 1 def test_repo_scoping_context_resolver_ignores_unknown_queries(monkeypatch): repo_scoping._CACHE.clear() monkeypatch.setattr( repo_scoping.httpx, "get", lambda *args, **kwargs: (_ for _ in ()).throw(AssertionError("unexpected HTTP")), ) assert repo_scoping.RepoScopingContextResolver().resolve("unknown", None, {}) == {}