TestMachineManager.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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)
  33. def test_discoveredMachine(machine_manager):
  34. mocked_callback = MagicMock()
  35. machine_manager.addDiscoveredPrinter("test", "zomg", mocked_callback, "derp")
  36. machine_manager.addMachineFromDiscoveredPrinter("test")
  37. mocked_callback.assert_called_with("test")
  38. assert len(machine_manager.discoveredPrinters) == 1
  39. # Test if removing it works
  40. machine_manager.removeDiscoveredPrinter("test")
  41. assert len(machine_manager.discoveredPrinters) == 0
  42. # Just in case, nothing should happen.
  43. machine_manager.addMachineFromDiscoveredPrinter("test")
  44. assert mocked_callback.call_count == 1