nodeslicer/tests/test_rename_mesh.py
2026-07-29 19:56:41 +03:00

65 lines
2 KiB
Python

import sys
import unittest
from unittest.mock import MagicMock
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parent.parent
sys.path.append(str(PROJECT_ROOT.parent))
# Mock bpy and dependencies for unit testing
class DummyNodeSocket: pass
class DummyNode: pass
class DummyObject:
def __init__(self, name="TestObj"):
self.name = name
mock_types = MagicMock()
mock_types.NodeSocket = DummyNodeSocket
mock_types.Node = DummyNode
mock_types.Object = DummyObject
mock_bpy = MagicMock()
mock_bpy.context.scene = MagicMock()
mock_bpy.context.scene.unit_settings.scale_length = 0.001
mock_bpy.types = mock_types
sys.modules['bpy'] = mock_bpy
sys.modules['bpy.types'] = mock_types
sys.modules['bpy.props'] = MagicMock()
sys.modules['bpy.utils'] = MagicMock()
from NodeSlicer.infra.blender.blender_mesh_capture import SlicingObject, SlicingCollection, SlicingGroup
from NodeSlicer.core.nodeslicer.nodes.mesh import _rename_slicing_item
class TestRenameMesh(unittest.TestCase):
def test_rename_slicing_object(self):
so = SlicingObject()
so.name = "OldName"
renamed = _rename_slicing_item(so, "NewName")
self.assertEqual(renamed.name, "NewName")
def test_rename_slicing_collection(self):
so1 = SlicingObject()
so1.name = "Part1"
sc = SlicingCollection([], "OldCollection")
sc.objects = [so1]
renamed = _rename_slicing_item(sc, "NewColl")
self.assertEqual(renamed.name, "NewColl")
self.assertEqual(renamed.objects[0].name, "NewColl")
self.assertEqual(renamed.objects[0].parent, "NewColl")
def test_rename_slicing_group(self):
sc = SlicingCollection([], "Coll1")
sg = SlicingGroup([])
sg.collections = {"Coll1": sc}
renamed = _rename_slicing_item(sg, "NewGroup")
self.assertIn("NewGroup", renamed.collections)
self.assertEqual(renamed.collections["NewGroup"].name, "NewGroup")
if __name__ == '__main__':
unittest.main()