Cura/tests/TestMachineManager.py
2019-03-08 13:43:58 +01:00

65 lines
2.5 KiB
Python

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.getInstance()
if manager is None:
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)
def test_discoveredMachine(machine_manager):
mocked_callback = MagicMock()
machine_manager.addDiscoveredPrinter("test", "zomg", mocked_callback, "derp")
machine_manager.addMachineFromDiscoveredPrinter("test")
mocked_callback.assert_called_with("test")
assert len(machine_manager.discoveredPrinters) == 1
# Test if removing it works
machine_manager.removeDiscoveredPrinter("test")
assert len(machine_manager.discoveredPrinters) == 0
# Just in case, nothing should happen.
machine_manager.addMachineFromDiscoveredPrinter("test")
assert mocked_callback.call_count == 1