diff --git a/tests/TestExtruderManager.py b/tests/TestExtruderManager.py new file mode 100644 index 0000000000..4ad75989de --- /dev/null +++ b/tests/TestExtruderManager.py @@ -0,0 +1,31 @@ + +from unittest.mock import MagicMock, patch + + +def createMockedExtruder(extruder_id): + extruder = MagicMock() + extruder.getId = MagicMock(return_value = extruder_id) + return extruder + + +def test_getAllExtruderSettings(extruder_manager): + extruder_1 = createMockedExtruder("extruder_1") + extruder_1.getProperty = MagicMock(return_value ="beep") + extruder_2 = createMockedExtruder("extruder_2") + extruder_2.getProperty = MagicMock(return_value="zomg") + extruder_manager.getActiveExtruderStacks = MagicMock(return_value = [extruder_1, extruder_2]) + assert extruder_manager.getAllExtruderSettings("whatever", "value") == ["beep", "zomg"] + + +def test_registerExtruder(extruder_manager): + extruder = createMockedExtruder("beep") + extruder.getMetaDataEntry = MagicMock(return_value = "0") # because the extruder position gets called + + extruder_manager.extrudersChanged = MagicMock() + extruder_manager.registerExtruder(extruder, "zomg") + + assert extruder_manager.extrudersChanged.emit.call_count == 1 + + # Doing it again should not trigger anything + extruder_manager.registerExtruder(extruder, "zomg") + assert extruder_manager.extrudersChanged.emit.call_count == 1 diff --git a/tests/TestMachineManager.py b/tests/TestMachineManager.py index 250f285e1f..1e8cd8fb12 100644 --- a/tests/TestMachineManager.py +++ b/tests/TestMachineManager.py @@ -2,8 +2,6 @@ from unittest.mock import MagicMock, patch import pytest -from UM.Settings.ContainerRegistry import ContainerRegistry -from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.MachineManager import MachineManager @@ -13,22 +11,6 @@ def global_stack(): stack.getId = MagicMock(return_value ="GlobalStack") return stack -@pytest.fixture() -def container_registry() -> ContainerRegistry: - return MagicMock(name = "ContainerRegistry") - - -@pytest.fixture() -def extruder_manager(application, container_registry) -> ExtruderManager: - if ExtruderManager.getInstance() is not None: - # Reset the data - ExtruderManager._ExtruderManager__instance = None - - with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)): - with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): - manager = ExtruderManager() - return manager - @pytest.fixture() def machine_manager(application, extruder_manager, container_registry, global_stack) -> MachineManager: diff --git a/tests/conftest.py b/tests/conftest.py index 7f46c202b3..829253dfd1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -11,9 +11,12 @@ import Savitar # Dont remove this line import Arcus # No really. Don't. It needs to be there! from UM.Qt.QtApplication import QtApplication # QtApplication import is required, even though it isn't used. # Even though your IDE says these files are not used, don't believe it. It's lying. They need to be there. +from UM.Settings.ContainerRegistry import ContainerRegistry from cura.CuraApplication import CuraApplication +from cura.Settings.ExtruderManager import ExtruderManager from cura.UI.MachineActionManager import MachineActionManager +from unittest.mock import MagicMock, patch # Create a CuraApplication object that will be shared among all tests. It needs to be initialized. # Since we need to use it more that once, we create the application the first time and use its instance afterwards. @@ -22,7 +25,24 @@ def application() -> CuraApplication: app = unittest.mock.MagicMock() return app + +@pytest.fixture() +def container_registry() -> ContainerRegistry: + return MagicMock(name = "ContainerRegistry") + + # Returns a MachineActionManager instance. @pytest.fixture() def machine_action_manager(application) -> MachineActionManager: return MachineActionManager(application) + +@pytest.fixture() +def extruder_manager(application, container_registry) -> ExtruderManager: + if ExtruderManager.getInstance() is not None: + # Reset the data + ExtruderManager._ExtruderManager__instance = None + + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + manager = ExtruderManager() + return manager \ No newline at end of file