import unittest
from tests import test_bootstrap # noqa: F401
from blender_mcp.tool_profiles import IntegrationsEnabled, ToolProfile, parse_tool_profile, select_tool_names
class TestToolProfiles(unittest.TestCase):
def test_parse_default_is_standard(self):
self.assertEqual(parse_tool_profile(None), ToolProfile.STANDARD)
self.assertEqual(parse_tool_profile(""), ToolProfile.STANDARD)
self.assertEqual(parse_tool_profile(" "), ToolProfile.STANDARD)
def test_parse_invalid_falls_back_to_standard(self):
self.assertEqual(parse_tool_profile("wat"), ToolProfile.STANDARD)
def test_minimal_includes_only_core(self):
tools = select_tool_names(ToolProfile.MINIMAL, IntegrationsEnabled())
self.assertIn("execute_ops", tools)
self.assertIn("get_scene_info", tools)
self.assertIn("get_viewport_screenshot", tools)
self.assertIn("get_capabilities", tools)
self.assertNotIn("create_primitive", tools)
def test_standard_includes_common_wrappers(self):
tools = select_tool_names(ToolProfile.STANDARD, IntegrationsEnabled())
self.assertIn("create_primitive", tools)
self.assertIn("set_transform", tools)
self.assertIn("select_objects", tools)
self.assertIn("assign_material", tools)
self.assertIn("render_still", tools)
def test_standard_includes_only_enabled_integrations(self):
tools_none = select_tool_names(ToolProfile.STANDARD, IntegrationsEnabled())
self.assertNotIn("get_polyhaven_status", tools_none)
tools_ph = select_tool_names(ToolProfile.STANDARD, IntegrationsEnabled(polyhaven=True))
self.assertIn("get_polyhaven_status", tools_ph)
self.assertNotIn("get_sketchfab_status", tools_ph)
if __name__ == "__main__":
unittest.main()