generated from coulomb/repo-seed
fix: unwrap single-key kaizen resolver payloads in resolve_context
When discover_kaizen_projects returns {"projects": [...]} bound to
context.projects, for_each can iterate the list directly. Multi-key
summaries (e.g. repo SBOM bulk) remain unchanged.
This commit is contained in:
45
tests/test_resolve_context_binding.py
Normal file
45
tests/test_resolve_context_binding.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from activity_core.activities import _bind_resolver_result, resolve_context
|
||||
|
||||
|
||||
def test_bind_resolver_result_unwraps_single_key_wrapper() -> None:
|
||||
projects = [{"repo": "kaizen-agentic", "has_metrics": True}]
|
||||
assert _bind_resolver_result("projects", {"projects": projects}) == projects
|
||||
|
||||
|
||||
def test_bind_resolver_result_keeps_multi_key_summary() -> None:
|
||||
summary = {
|
||||
"repos": [{"repo_slug": "a"}],
|
||||
"stale_count": 1,
|
||||
"total_count": 2,
|
||||
}
|
||||
assert _bind_resolver_result("repos", summary) == summary
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_resolve_context_unwraps_kaizen_projects(monkeypatch) -> None:
|
||||
class _FakeResolver:
|
||||
def resolve(self, query: str, event: object, params: dict) -> dict:
|
||||
assert query == "discover_kaizen_projects"
|
||||
return {"projects": [{"repo": "pilot", "has_metrics": True}]}
|
||||
|
||||
import activity_core.context_resolvers # noqa: F401
|
||||
from activity_core.context_resolvers.base import CONTEXT_RESOLVER_REGISTRY
|
||||
|
||||
monkeypatch.setitem(CONTEXT_RESOLVER_REGISTRY, "kaizen", lambda: _FakeResolver())
|
||||
|
||||
snapshot = await resolve_context(
|
||||
[
|
||||
{
|
||||
"type": "kaizen",
|
||||
"query": "discover_kaizen_projects",
|
||||
"params": {},
|
||||
"bind_to": "context.projects",
|
||||
}
|
||||
]
|
||||
)
|
||||
|
||||
assert snapshot == {"projects": [{"repo": "pilot", "has_metrics": True}]}
|
||||
Reference in New Issue
Block a user