mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
* test(visualization): isolate optional dependency mocks * test(visualization): stop requiring Plotly in unit tests Removing the global sys.modules stubs left the tests that patch `...go.Bar`, or call a visualizer, with nothing standing in for the module level `px` and `go` aliases. Those are None when Plotly is missing, so patch resolution and _check_dependencies() both failed. Add a helper that substitutes a double only for the aliases that are None, leaving the real module in place when Plotly is installed. ---------
68 lines
3.0 KiB
Python
68 lines
3.0 KiB
Python
import unittest
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
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()
|