|
|
|
import pytest
|
|
|
|
from unittest.mock import Mock, patch
|
|
|
|
from swarms.workers.worker_agent_ultra import (
|
|
|
|
WorkerUltraNode,
|
|
|
|
WorkerUltraNodeInitializer,
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def llm_mock():
|
|
|
|
return Mock()
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def toolsets_mock():
|
|
|
|
return Mock()
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def vectorstore_mock():
|
|
|
|
return Mock()
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def worker_ultra_node(llm_mock, toolsets_mock, vectorstore_mock):
|
|
|
|
return WorkerUltraNode(llm_mock, toolsets_mock, vectorstore_mock)
|
|
|
|
|
|
|
|
|
|
|
|
def test_worker_ultra_node_create_agent(worker_ultra_node):
|
|
|
|
with patch("yourmodule.AutoGPT.from_llm_and_tools") as mock_method:
|
|
|
|
worker_ultra_node.create_agent()
|
|
|
|
mock_method.assert_called_once()
|
|
|
|
|
|
|
|
|
|
|
|
def test_worker_ultra_node_add_toolset(worker_ultra_node):
|
|
|
|
with pytest.raises(TypeError):
|
|
|
|
worker_ultra_node.add_toolset("wrong_toolset")
|
|
|
|
|
|
|
|
|
|
|
|
def test_worker_ultra_node_run(worker_ultra_node):
|
|
|
|
with patch.object(worker_ultra_node, "agent") as mock_agent:
|
|
|
|
mock_agent.run.return_value = None
|
|
|
|
result = worker_ultra_node.run("some prompt")
|
|
|
|
assert result == "Task completed by WorkerNode"
|
|
|
|
mock_agent.run.assert_called_once()
|
|
|
|
|
|
|
|
|
|
|
|
def test_worker_ultra_node_run_no_prompt(worker_ultra_node):
|
|
|
|
with pytest.raises(ValueError):
|
|
|
|
worker_ultra_node.run("")
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def worker_ultra_node_initializer():
|
|
|
|
return WorkerUltraNodeInitializer("openai_api_key")
|
|
|
|
|
|
|
|
|
|
|
|
def test_worker_ultra_node_initializer_initialize_llm(worker_ultra_node_initializer):
|
|
|
|
with patch("yourmodule.ChatOpenAI") as mock_llm:
|
|
|
|
worker_ultra_node_initializer.initialize_llm(mock_llm)
|
|
|
|
mock_llm.assert_called_once()
|
|
|
|
|
|
|
|
|
|
|
|
def test_worker_ultra_node_initializer_initialize_toolsets(
|
|
|
|
worker_ultra_node_initializer,
|
|
|
|
):
|
|
|
|
with patch("yourmodule.Terminal"), patch("yourmodule.CodeEditor"), patch(
|
|
|
|
"yourmodule.RequestsGet"
|
|
|
|
), patch("yourmodule.ExitConversation"):
|
|
|
|
toolsets = worker_ultra_node_initializer.initialize_toolsets()
|
|
|
|
assert len(toolsets) == 4
|
|
|
|
|
|
|
|
|
|
|
|
def test_worker_ultra_node_initializer_initialize_vectorstore(
|
|
|
|
worker_ultra_node_initializer,
|
|
|
|
):
|
|
|
|
with patch("yourmodule.OpenAIEmbeddings"), patch(
|
|
|
|
"yourmodule.fauss.IndexFlatL2"
|
|
|
|
), patch("yourmodule.FAISS"), patch("yourmodule.InMemoryDocstore"):
|
|
|
|
vectorstore = worker_ultra_node_initializer.initialize_vectorstore()
|
|
|
|
assert vectorstore is not None
|
|
|
|
|
|
|
|
|
|
|
|
def test_worker_ultra_node_initializer_create_worker_node(
|
|
|
|
worker_ultra_node_initializer,
|
|
|
|
):
|
|
|
|
with patch.object(worker_ultra_node_initializer, "initialize_llm"), patch.object(
|
|
|
|
worker_ultra_node_initializer, "initialize_toolsets"
|
|
|
|
), patch.object(worker_ultra_node_initializer, "initialize_vectorstore"):
|
|
|
|
worker_node = worker_ultra_node_initializer.create_worker_node()
|
|
|
|
assert worker_node is not None
|