81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
"""Tests for M9.3 community improvement workflow."""
|
|
|
|
from cmdforge.community import (
|
|
ImprovementSubmission,
|
|
create_submission,
|
|
run_submission_tests,
|
|
review_submission,
|
|
)
|
|
from cmdforge.tool import Tool, PromptStep, CodeStep
|
|
|
|
|
|
class TestCreateSubmission:
|
|
def test_create_for_prompt_step(self):
|
|
tool = Tool(
|
|
name="test",
|
|
version="1.0.0",
|
|
steps=[PromptStep(prompt="Summarize", provider="mock", output_var="x")],
|
|
output="{x}",
|
|
)
|
|
sub = create_submission(tool, 0, "Summarize the text thoroughly", "alice", "More detail")
|
|
assert sub.tool_name == "test"
|
|
assert sub.step_type == "prompt"
|
|
assert sub.original == "Summarize"
|
|
assert sub.proposed == "Summarize the text thoroughly"
|
|
assert sub.submitter == "alice"
|
|
assert sub.status == "pending"
|
|
|
|
def test_create_for_code_step(self):
|
|
tool = Tool(
|
|
name="test",
|
|
steps=[CodeStep(code="x = 1", output_var="x")],
|
|
output="{x}",
|
|
)
|
|
sub = create_submission(tool, 0, "x = 42", "bob")
|
|
assert sub.step_type == "code"
|
|
assert sub.original == "x = 1"
|
|
|
|
def test_invalid_step_index(self):
|
|
tool = Tool(name="test")
|
|
try:
|
|
create_submission(tool, 5, "new", "alice")
|
|
assert False, "Should have raised"
|
|
except ValueError:
|
|
pass
|
|
|
|
|
|
class TestReviewSubmission:
|
|
def test_review_approved(self):
|
|
sub = ImprovementSubmission(
|
|
tool_name="test", tool_version="1.0.0", submitter="alice",
|
|
step_index=0, step_type="prompt", original="a", proposed="b",
|
|
status="tested", test_result={"passed_for_review": True},
|
|
)
|
|
review = review_submission(sub, "approve", "admin", "Good improvement")
|
|
assert review.decision == "approve"
|
|
assert sub.status == "approved"
|
|
|
|
def test_review_pending_rejected(self):
|
|
sub = ImprovementSubmission(
|
|
tool_name="test", tool_version="1.0.0", submitter="alice",
|
|
step_index=0, step_type="prompt", original="a", proposed="b",
|
|
status="pending",
|
|
)
|
|
try:
|
|
review_submission(sub, "approve", "admin")
|
|
assert False, "Should have raised"
|
|
except ValueError:
|
|
pass
|
|
|
|
def test_invalid_decision(self):
|
|
sub = ImprovementSubmission(
|
|
tool_name="test", tool_version="1.0.0", submitter="alice",
|
|
step_index=0, step_type="prompt", original="a", proposed="b",
|
|
status="tested",
|
|
)
|
|
try:
|
|
review_submission(sub, "maybe", "admin")
|
|
assert False, "Should have raised"
|
|
except ValueError:
|
|
pass
|