|
@@ -0,0 +1,78 @@
|
|
|
+import pytest
|
|
|
+
|
|
|
+from unittest.mock import patch, MagicMock
|
|
|
+
|
|
|
+from UM.Scene.GroupDecorator import GroupDecorator
|
|
|
+from UM.Scene.SceneNode import SceneNode
|
|
|
+from cura.Scene.BuildPlateDecorator import BuildPlateDecorator
|
|
|
+from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator
|
|
|
+from cura.UI.ObjectsModel import ObjectsModel
|
|
|
+
|
|
|
+
|
|
|
+@pytest.fixture()
|
|
|
+def objects_model(application):
|
|
|
+ with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
|
|
|
+ return ObjectsModel()
|
|
|
+
|
|
|
+
|
|
|
+@pytest.fixture()
|
|
|
+def group_scene_node():
|
|
|
+ node = SceneNode()
|
|
|
+ node.addDecorator(GroupDecorator())
|
|
|
+ return node
|
|
|
+
|
|
|
+
|
|
|
+@pytest.fixture()
|
|
|
+def slicable_scene_node():
|
|
|
+ node = SceneNode()
|
|
|
+ node.addDecorator(SliceableObjectDecorator())
|
|
|
+ return node
|
|
|
+
|
|
|
+
|
|
|
+def test_setActiveBuildPlate(objects_model):
|
|
|
+ objects_model._update = MagicMock()
|
|
|
+
|
|
|
+ objects_model.setActiveBuildPlate(12)
|
|
|
+ assert objects_model._update.call_count == 1
|
|
|
+
|
|
|
+ objects_model.setActiveBuildPlate(12)
|
|
|
+ assert objects_model._update.call_count == 1
|
|
|
+
|
|
|
+
|
|
|
+class Test_shouldNodeBeHandled:
|
|
|
+ def test_nonSlicableSceneNode(self, objects_model):
|
|
|
+ # An empty SceneNode should not be handled by this model
|
|
|
+ assert not objects_model._shouldNodeBeHandled(SceneNode())
|
|
|
+
|
|
|
+ def test_groupedNode(self, objects_model, slicable_scene_node, application):
|
|
|
+ with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
|
|
|
+ # A node without a build plate number should not be handled.
|
|
|
+ assert not objects_model._shouldNodeBeHandled(slicable_scene_node)
|
|
|
+
|
|
|
+ def test_childNode(self, objects_model, group_scene_node, slicable_scene_node, application):
|
|
|
+ slicable_scene_node.setParent(group_scene_node)
|
|
|
+ with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
|
|
|
+ # A child node of a group node should not be handled.
|
|
|
+ assert not objects_model._shouldNodeBeHandled(slicable_scene_node)
|
|
|
+
|
|
|
+ def test_slicableNodeWithoutFiltering(self, objects_model, slicable_scene_node, application):
|
|
|
+ mocked_preferences = MagicMock(name="preferences")
|
|
|
+ mocked_preferences.getValue = MagicMock(return_value = False)
|
|
|
+ application.getPreferences = MagicMock(return_value = mocked_preferences)
|
|
|
+
|
|
|
+ with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
|
|
|
+ # A slicable node should be handled by this model.
|
|
|
+ assert objects_model._shouldNodeBeHandled(slicable_scene_node)
|
|
|
+
|
|
|
+ def test_slicableNodeWithFiltering(self, objects_model, slicable_scene_node, application):
|
|
|
+ mocked_preferences = MagicMock(name="preferences")
|
|
|
+ mocked_preferences.getValue = MagicMock(return_value = True)
|
|
|
+ application.getPreferences = MagicMock(return_value = mocked_preferences)
|
|
|
+
|
|
|
+ buildplate_decorator = BuildPlateDecorator()
|
|
|
+ buildplate_decorator.setBuildPlateNumber(-1)
|
|
|
+ slicable_scene_node.addDecorator(buildplate_decorator)
|
|
|
+
|
|
|
+ with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
|
|
|
+ # A slicable node with the same buildplate number should be handled.
|
|
|
+ assert objects_model._shouldNodeBeHandled(slicable_scene_node)
|