57 lines
2.1 KiB
Python
57 lines
2.1 KiB
Python
# retoor <retoor@molodetz.nl>
|
|||
|
|
|
||
|
|
from devplacepy.services.devii import tool_prefs
|
||
|
|
|
||
|
|
|
||
|
|
def test_disabled_tool_names_round_trips(local_db):
|
||
|
|
try:
|
||
|
|
tool_prefs.set_disabled_tool_names({"create_post", "delete_post"})
|
||
|
|
assert tool_prefs.disabled_tool_names() == frozenset({"create_post", "delete_post"})
|
||
|
|
finally:
|
||
|
|
tool_prefs.set_disabled_tool_names(set())
|
||
|
|
|
||
|
|
|
||
|
|
def test_set_disabled_tool_names_drops_unknown_names(local_db):
|
||
|
|
try:
|
||
|
|
tool_prefs.set_disabled_tool_names({"create_post", "not_a_real_tool_xyz"})
|
||
|
|
assert tool_prefs.disabled_tool_names() == frozenset({"create_post"})
|
||
|
|
finally:
|
||
|
|
tool_prefs.set_disabled_tool_names(set())
|
||
|
|
|
||
|
|
|
||
|
|
def test_disabled_tool_names_empty_by_default(local_db):
|
||
|
|
tool_prefs.set_disabled_tool_names(set())
|
||
|
|
assert tool_prefs.disabled_tool_names() == frozenset()
|
||
|
|
|
||
|
|
|
||
|
|
def test_filter_disabled_removes_matching_schemas():
|
||
|
|
schemas = [
|
||
|
|
{"function": {"name": "create_post"}},
|
||
|
|
{"function": {"name": "list_posts"}},
|
||
|
|
]
|
||
|
|
result = tool_prefs.filter_disabled(schemas, disabled=frozenset({"create_post"}))
|
||
|
|
assert [s["function"]["name"] for s in result] == ["list_posts"]
|
||
|
|
|
||
|
|
|
||
|
|
def test_filter_disabled_is_a_no_op_when_nothing_disabled():
|
||
|
|
schemas = [{"function": {"name": "create_post"}}]
|
||
|
|
assert tool_prefs.filter_disabled(schemas, disabled=frozenset()) == schemas
|
||
|
|
|
||
|
|
|
||
|
|
def test_group_overview_covers_every_group_and_marks_disabled(local_db):
|
||
|
|
try:
|
||
|
|
tool_prefs.set_disabled_tool_names({"create_post"})
|
||
|
|
overview = tool_prefs.group_overview()
|
||
|
|
assert len(overview) == len(tool_prefs.GROUPS)
|
||
|
|
posts_group = next(g for g in overview if g["key"] == "posts")
|
||
|
|
create_post_tool = next(t for t in posts_group["tools"] if t["name"] == "create_post")
|
||
|
|
assert create_post_tool["disabled"] is True
|
||
|
|
assert posts_group["enabled_count"] == posts_group["total_count"] - 1
|
||
|
|
finally:
|
||
|
|
tool_prefs.set_disabled_tool_names(set())
|
||
|
|
|
||
|
|
|
||
|
|
def test_groups_by_tool_name_covers_every_action_in_every_group():
|
||
|
|
total_actions = sum(len(actions) for actions in tool_prefs.GROUPS.values())
|
||
|
|
assert len(tool_prefs.GROUPS_BY_TOOL_NAME) == total_actions
|