mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
- Robust ID extraction in CentralityCalculator, CommunityDetector, and ConnectivityAnalyzer - Support for direct Entity objects and dictionaries as node identifiers - Improved Entity hashability in utils/types.py - Added integration test to verify fix and prevent regression
90 lines
3.7 KiB
Python
90 lines
3.7 KiB
Python
import unittest
|
|
from unittest.mock import MagicMock, patch, ANY
|
|
import sys
|
|
import types
|
|
|
|
# Helper to create a mock package
|
|
def mock_package(name):
|
|
m = MagicMock()
|
|
m.__path__ = []
|
|
sys.modules[name] = m
|
|
return m
|
|
|
|
# Mock libraries before importing module under test
|
|
# We need to ensure matplotlib behaves like a package for seaborn
|
|
sys.modules['matplotlib'] = MagicMock()
|
|
sys.modules['matplotlib.colors'] = MagicMock()
|
|
sys.modules['matplotlib.pyplot'] = MagicMock()
|
|
sys.modules['matplotlib.patches'] = MagicMock()
|
|
sys.modules['plotly'] = MagicMock()
|
|
sys.modules['plotly.express'] = MagicMock()
|
|
sys.modules['plotly.graph_objects'] = MagicMock()
|
|
sys.modules['plotly.subplots'] = MagicMock()
|
|
sys.modules['graphviz'] = MagicMock()
|
|
sys.modules['seaborn'] = MagicMock()
|
|
|
|
from semantica.visualization.kg_visualizer import KGVisualizer
|
|
from semantica.visualization.ontology_visualizer import OntologyVisualizer
|
|
from semantica.visualization.utils.color_schemes import ColorScheme
|
|
|
|
class TestVisualization(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.mock_logger = MagicMock()
|
|
self.mock_tracker = MagicMock()
|
|
|
|
self.logger_patcher = patch('semantica.visualization.kg_visualizer.get_logger', return_value=self.mock_logger)
|
|
self.tracker_patcher = patch('semantica.visualization.kg_visualizer.get_progress_tracker', return_value=self.mock_tracker)
|
|
|
|
self.logger_patcher_ov = patch('semantica.visualization.ontology_visualizer.get_logger', return_value=self.mock_logger)
|
|
self.tracker_patcher_ov = patch('semantica.visualization.ontology_visualizer.get_progress_tracker', return_value=self.mock_tracker)
|
|
|
|
self.logger_patcher.start()
|
|
self.tracker_patcher.start()
|
|
self.logger_patcher_ov.start()
|
|
self.tracker_patcher_ov.start()
|
|
|
|
def tearDown(self):
|
|
self.logger_patcher.stop()
|
|
self.tracker_patcher.stop()
|
|
self.logger_patcher_ov.stop()
|
|
self.tracker_patcher_ov.stop()
|
|
|
|
def test_kg_visualizer_initialization(self):
|
|
viz = KGVisualizer(layout="force", color_scheme="default")
|
|
self.assertIsInstance(viz, KGVisualizer)
|
|
self.assertEqual(viz.layout_type, "force")
|
|
self.assertEqual(viz.color_scheme, ColorScheme.DEFAULT)
|
|
|
|
def test_ontology_visualizer_initialization(self):
|
|
viz = OntologyVisualizer(color_scheme="default")
|
|
self.assertIsInstance(viz, OntologyVisualizer)
|
|
self.assertEqual(viz.color_scheme, ColorScheme.DEFAULT)
|
|
|
|
@patch('semantica.visualization.kg_visualizer.ForceDirectedLayout')
|
|
@patch('semantica.visualization.kg_visualizer.HierarchicalLayout')
|
|
@patch('semantica.visualization.kg_visualizer.CircularLayout')
|
|
def test_kg_visualizer_layouts_init(self, mock_circ, mock_hier, mock_force):
|
|
viz = KGVisualizer()
|
|
mock_force.assert_called()
|
|
mock_hier.assert_called()
|
|
mock_circ.assert_called()
|
|
|
|
# We can add more specific tests if we know the methods.
|
|
# Since we mocked the heavy libraries, we can try calling visualize methods
|
|
# provided we mock the internal data processing or if they handle empty data gracefully.
|
|
|
|
def test_kg_visualizer_methods_existence(self):
|
|
viz = KGVisualizer()
|
|
self.assertTrue(hasattr(viz, 'visualize_network'))
|
|
# Add other methods based on file reading:
|
|
# visualize_communities, visualize_centrality, visualize_entity_types, visualize_relationship_matrix
|
|
|
|
def test_ontology_visualizer_methods_existence(self):
|
|
viz = OntologyVisualizer()
|
|
self.assertTrue(hasattr(viz, 'visualize_hierarchy'))
|
|
# visualize_properties, visualize_structure, visualize_class_property_matrix, visualize_metrics, visualize_semantic_model
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|