12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- from unittest.mock import MagicMock, patch
- import pytest
- from UM.Scene.SceneNode import SceneNode
- from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel
- from cura.Scene.CuraSceneController import CuraSceneController
- from cura.UI.ObjectsModel import ObjectsModel
- @pytest.fixture
- def objects_model() -> ObjectsModel:
- return MagicMock(spec=ObjectsModel)
- @pytest.fixture
- def multi_build_plate_model() -> MultiBuildPlateModel:
- return MagicMock(spec=MultiBuildPlateModel)
- @pytest.fixture
- def mocked_application():
- mocked_application = MagicMock()
- mocked_controller = MagicMock()
- mocked_scene = MagicMock()
- mocked_application.getController = MagicMock(return_value=mocked_controller)
- mocked_controller.getScene = MagicMock(return_value=mocked_scene)
- return mocked_application
- def test_setActiveBuildPlate(objects_model, multi_build_plate_model):
- with patch("UM.Application.Application.getInstance"):
- controller = CuraSceneController(objects_model, multi_build_plate_model)
- controller.setActiveBuildPlate(12)
- multi_build_plate_model.setActiveBuildPlate.assert_called_once_with(12)
- objects_model.setActiveBuildPlate.assert_called_once_with(12)
- # Doing it again shouldn't cause another change to be passed along
- controller.setActiveBuildPlate(12)
- multi_build_plate_model.setActiveBuildPlate.assert_called_once_with(12)
- objects_model.setActiveBuildPlate.assert_called_once_with(12)
- def test_calcMaxBuildPlateEmptyScene(objects_model, multi_build_plate_model, mocked_application):
- mocked_root = MagicMock()
- mocked_root.callDecoration = MagicMock(return_value=0)
- mocked_application.getController().getScene().getRoot = MagicMock(return_value=mocked_root)
- with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)):
- controller = CuraSceneController(objects_model, multi_build_plate_model)
- assert controller._calcMaxBuildPlate() == 0
- def test_calcMaxBuildPlateFilledScene(objects_model, multi_build_plate_model, mocked_application):
- mocked_root = MagicMock()
- mocked_root.callDecoration = MagicMock(return_value = 0)
- mocked_child = MagicMock()
- mocked_child.callDecoration = MagicMock(return_value = 2)
- mocked_root.getAllChildren = MagicMock(return_value = [mocked_child])
- mocked_application.getController().getScene().getRoot = MagicMock(return_value=mocked_root)
- with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)):
- controller = CuraSceneController(objects_model, multi_build_plate_model)
- assert controller._calcMaxBuildPlate() == 2
- def test_updateMaxBuildPlate(objects_model, multi_build_plate_model):
- with patch("UM.Application.Application.getInstance"):
- controller = CuraSceneController(objects_model, multi_build_plate_model)
- controller._calcMaxBuildPlate = MagicMock(return_value = 12)
- controller.updateMaxBuildPlate(SceneNode())
- # Check if that went well.
- multi_build_plate_model.setMaxBuildPlate.assert_called_once_with(12)
- # Move to a different active build plate
- controller.setActiveBuildPlate(5)
- # And check what happens if we move down again!
- controller._calcMaxBuildPlate = MagicMock(return_value=2)
- controller.updateMaxBuildPlate(SceneNode())
- assert controller._active_build_plate == 0 # We don't have any items anywhere, so default to 0
|