Files
wehub-resource-sync fbfefa28d3
CodeQL / Analyze (python) (push) Failing after 0s
Release / Build (push) Failing after 1s
Test Suite / Unit Tests (push) Failing after 0s
Release / Release (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:18:10 +08:00

111 lines
4.5 KiB
Python

from pydantic import BaseModel
# Import the class under test
from scrapegraphai.graphs.omni_search_graph import OmniSearchGraph
# Create a dummy graph class to simulate graph execution
class DummyGraph:
def __init__(self, final_state):
self.final_state = final_state
def execute(self, inputs):
# Return final_state and dummy execution info
return self.final_state, {"debug": True}
# Dummy schema for testing purposes
class DummySchema(BaseModel):
result: str
class TestOmniSearchGraph:
"""Test suite for the OmniSearchGraph module."""
def test_run_with_answer(self):
"""Test that the run() method returns the correct answer when present."""
config = {
"llm": {"model": "dummy-model"},
"max_results": 3,
"search_engine": "dummy-engine",
}
prompt = "Test prompt?"
graph_instance = OmniSearchGraph(prompt, config)
# Set required attribute manually
graph_instance.llm_model = {"model": "dummy-model"}
# Inject a DummyGraph that returns a final state containing an "answer"
dummy_final_state = {"answer": "expected answer"}
graph_instance.graph = DummyGraph(dummy_final_state)
result = graph_instance.run()
assert result == "expected answer"
def test_run_without_answer(self):
"""Test that the run() method returns the default message when no answer is found."""
config = {
"llm": {"model": "dummy-model"},
"max_results": 3,
"search_engine": "dummy-engine",
}
prompt = "Test prompt without answer?"
graph_instance = OmniSearchGraph(prompt, config)
graph_instance.llm_model = {"model": "dummy-model"}
# Inject a DummyGraph that returns an empty final state
dummy_final_state = {}
graph_instance.graph = DummyGraph(dummy_final_state)
result = graph_instance.run()
assert result == "No answer found."
def test_create_graph_structure(self):
"""Test that the _create_graph() method returns a graph with the expected structure."""
config = {
"llm": {"model": "dummy-model"},
"max_results": 4,
"search_engine": "dummy-engine",
}
prompt = "Structure test prompt"
# Using a dummy schema for testing
graph_instance = OmniSearchGraph(prompt, config, schema=DummySchema)
graph_instance.llm_model = {"model": "dummy-model"}
constructed_graph = graph_instance._create_graph()
# Ensure constructed_graph has essential attributes
assert hasattr(constructed_graph, "nodes")
assert hasattr(constructed_graph, "edges")
assert hasattr(constructed_graph, "entry_point")
assert hasattr(constructed_graph, "graph_name")
# Check that the graph_name matches the class name
assert constructed_graph.graph_name == "OmniSearchGraph"
# Expecting three nodes and two edges as per the implementation
assert len(constructed_graph.nodes) == 3
assert len(constructed_graph.edges) == 2
def test_config_deepcopy(self):
"""Test that the config passed to OmniSearchGraph is deep copied properly."""
config = {
"llm": {"model": "dummy-model"},
"max_results": 2,
"search_engine": "dummy-engine",
}
prompt = "Deepcopy test"
graph_instance = OmniSearchGraph(prompt, config)
graph_instance.llm_model = {"model": "dummy-model"}
# Modify the original config after instantiation
config["llm"]["model"] = "changed-model"
# The internal copy should remain unchanged
assert graph_instance.copy_config["llm"]["model"] == "dummy-model"
def test_schema_deepcopy(self):
"""Test that the schema is deep copied correctly so external changes do not affect it."""
config = {
"llm": {"model": "dummy-model"},
"max_results": 2,
"search_engine": "dummy-engine",
}
# Instantiate with DummySchema
graph_instance = OmniSearchGraph("Schema test", config, schema=DummySchema)
graph_instance.llm_model = {"model": "dummy-model"}
# Modify the internal copy of the schema directly to simulate isolation
graph_instance.copy_schema = DummySchema(result="internal")
external_schema = DummySchema(result="external")
external_schema.result = "modified"
assert graph_instance.copy_schema.result == "internal"