TestMachineManager.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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 global_stack():
  8. return MagicMock(name="Global Stack")
  9. @pytest.fixture()
  10. def container_registry() -> ContainerRegistry:
  11. return MagicMock(name = "ContainerRegistry")
  12. @pytest.fixture()
  13. def extruder_manager(application, container_registry) -> ExtruderManager:
  14. if ExtruderManager.getInstance() is not None:
  15. # Reset the data
  16. ExtruderManager._ExtruderManager__instance = None
  17. with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)):
  18. with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)):
  19. manager = ExtruderManager()
  20. return manager
  21. @pytest.fixture()
  22. def machine_manager(application, extruder_manager, container_registry, global_stack) -> MachineManager:
  23. application.getExtruderManager = MagicMock(return_value = extruder_manager)
  24. application.getGlobalContainerStack = MagicMock(return_value = global_stack)
  25. with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=container_registry)):
  26. manager = MachineManager(application)
  27. return manager
  28. def test_setActiveMachine(machine_manager):
  29. registry = MagicMock()
  30. mocked_global_stack = MagicMock()
  31. mocked_global_stack.getId = MagicMock(return_value = "test_machine")
  32. registry.findContainerStacks = MagicMock(return_value = [mocked_global_stack])
  33. with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=registry)):
  34. with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=registry)):
  35. machine_manager.setActiveMachine("test_machine")
  36. # Although we mocked the application away, we still want to know if it was notified about the attempted change.
  37. machine_manager._application.setGlobalContainerStack.assert_called_with(mocked_global_stack)
  38. def test_hasUserSettings(machine_manager, application):
  39. mocked_stack = application.getGlobalContainerStack()
  40. mocked_instance_container = MagicMock(name="UserSettingContainer")
  41. mocked_instance_container.getNumInstances = MagicMock(return_value = 12)
  42. mocked_stack.getTop = MagicMock(return_value = mocked_instance_container)
  43. assert machine_manager.numUserSettings == 12
  44. assert machine_manager.hasUserSettings
  45. def test_totalNumberOfSettings(machine_manager):
  46. registry = MagicMock()
  47. mocked_definition = MagicMock()
  48. mocked_definition.getAllKeys = MagicMock(return_value = ["omg", "zomg", "foo"])
  49. registry.findDefinitionContainers = MagicMock(return_value = [mocked_definition])
  50. with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=registry)):
  51. assert machine_manager.totalNumberOfSettings == 3