diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 1b6c6e44f7..3416f0a321 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -363,6 +363,7 @@ class MachineManager(QObject): ConfigurationErrorMessage.getInstance().addFaultyContainers(global_stack.getId()) return # We're done here ExtruderManager.getInstance().setActiveExtruderIndex(0) # Switch to first extruder + self._global_container_stack = global_stack self._application.setGlobalContainerStack(global_stack) ExtruderManager.getInstance()._globalContainerStackChanged() diff --git a/tests/TestMachineManager.py b/tests/TestMachineManager.py new file mode 100644 index 0000000000..b989a6ee79 --- /dev/null +++ b/tests/TestMachineManager.py @@ -0,0 +1,43 @@ +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 + + +@pytest.fixture() +def container_registry() -> ContainerRegistry: + return MagicMock() + +@pytest.fixture() +def extruder_manager(application, container_registry) -> ExtruderManager: + 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) -> MachineManager: + application.getExtruderManager = MagicMock(return_value = extruder_manager) + with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + manager = MachineManager(application) + + return manager + + +def test_setActiveMachine(machine_manager): + registry = MagicMock() + + mocked_global_stack = MagicMock() + + mocked_global_stack.getId = MagicMock(return_value = "test_machine") + registry.findContainerStacks = MagicMock(return_value = [mocked_global_stack]) + with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=registry)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=registry)): + machine_manager.setActiveMachine("test_machine") + + # Although we mocked the application away, we still want to know if it was notified about the attempted change. + machine_manager._application.setGlobalContainerStack.assert_called_with(mocked_global_stack) + diff --git a/tests/TestPrintInformation.py b/tests/TestPrintInformation.py index b14fd20f28..e658d20c05 100644 --- a/tests/TestPrintInformation.py +++ b/tests/TestPrintInformation.py @@ -77,6 +77,9 @@ def test_duration(): # Fake a print duration message print_information._onPrintDurationMessage(0, {"Travel": 20}, [10]) + # We only set a single time, so the total time must be of the same value. + assert int(print_information.currentPrintTime) == 20 + feature_print_times = print_information.getFeaturePrintTimes() assert int(feature_print_times["Travel"]) == 20