TestMachineManager.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from unittest.mock import MagicMock, patch
  2. import pytest
  3. from UM.Settings.ContainerRegistry import ContainerRegistry
  4. from cura.Settings.ExtruderManager import ExtruderManager
  5. from cura.Settings.MachineManager import MachineManager
  6. @pytest.fixture()
  7. def container_registry() -> ContainerRegistry:
  8. return MagicMock()
  9. @pytest.fixture()
  10. def extruder_manager(application, container_registry) -> ExtruderManager:
  11. with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)):
  12. with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)):
  13. manager = ExtruderManager.getInstance()
  14. if manager is None:
  15. manager = ExtruderManager()
  16. return manager
  17. @pytest.fixture()
  18. def machine_manager(application, extruder_manager, container_registry) -> MachineManager:
  19. application.getExtruderManager = MagicMock(return_value = extruder_manager)
  20. with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=container_registry)):
  21. manager = MachineManager(application)
  22. return manager
  23. def test_setActiveMachine(machine_manager):
  24. registry = MagicMock()
  25. mocked_global_stack = MagicMock()
  26. mocked_global_stack.getId = MagicMock(return_value = "test_machine")
  27. registry.findContainerStacks = MagicMock(return_value = [mocked_global_stack])
  28. with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=registry)):
  29. with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=registry)):
  30. machine_manager.setActiveMachine("test_machine")
  31. # Although we mocked the application away, we still want to know if it was notified about the attempted change.
  32. machine_manager._application.setGlobalContainerStack.assert_called_with(mocked_global_stack)