mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
"""Generators must produce deterministic, predictable output."""
|
|||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import json
|
||
|
|
|
||
|
|
from roboco.foundation import _generators
|
||
|
|
|
||
|
|
|
||
|
|
def test_render_intent_verbs_md_lists_every_intent() -> None:
|
||
|
|
md = _generators.render_intent_verbs_md()
|
||
|
|
assert "## i_will_work_on" in md
|
||
|
|
assert "## open_pr" in md
|
||
|
|
assert "## delegate" in md
|
||
|
|
|
||
|
|
|
||
|
|
def test_render_intent_verbs_md_includes_composes_for_each() -> None:
|
||
|
|
md = _generators.render_intent_verbs_md()
|
||
|
|
# i_will_work_on composes claim → set_plan → start; expect those names appear.
|
||
|
|
assert "claim" in md
|
||
|
|
assert "set_plan" in md
|
||
|
|
assert "start" in md
|
||
|
|
|
||
|
|
|
||
|
|
def test_render_status_transitions_md_has_table_header() -> None:
|
||
|
|
md = _generators.render_status_transitions_md()
|
||
|
|
assert "| Source | Target | Action | Roles |" in md
|
||
|
|
|
||
|
|
|
||
|
|
def test_render_panel_json_emits_intents_array() -> None:
|
||
|
|
payload = _generators.render_panel_json()
|
||
|
|
parsed = json.loads(payload)
|
||
|
|
assert "intents" in parsed
|
||
|
|
assert isinstance(parsed["intents"], list)
|
||
|
|
assert any(i["name"] == "i_will_work_on" for i in parsed["intents"])
|
||
|
|
|
||
|
|
|
||
|
|
def test_render_agent_prompt_fragment_for_developer_lists_dev_verbs() -> None:
|
||
|
|
fragment = _generators.render_agent_prompt_fragment("developer")
|
||
|
|
assert "i_will_work_on" in fragment
|
||
|
|
assert "open_pr" in fragment
|
||
|
|
assert "delegate" not in fragment # PM only
|
||
|
|
|
||
|
|
|
||
|
|
def test_generators_are_deterministic() -> None:
|
||
|
|
"""Two consecutive renders produce the same bytes."""
|
||
|
|
a = _generators.render_intent_verbs_md()
|
||
|
|
b = _generators.render_intent_verbs_md()
|
||
|
|
assert a == b
|