Browse Source

Added tests for adding & removing discovered devices

CURA-6179
Jaime van Kessel 6 years ago
parent
commit
1c7e047a38
2 changed files with 20 additions and 1 deletions
  1. 7 0
      cura/Settings/MachineManager.py
  2. 13 1
      tests/TestMachineManager.py

+ 7 - 0
cura/Settings/MachineManager.py

@@ -162,6 +162,7 @@ class MachineManager(QObject):
     printerConnectedStatusChanged = pyqtSignal() # Emitted every time the active machine change or the outputdevices change
 
     rootMaterialChanged = pyqtSignal()
+    discoveredPrintersChanged = pyqtSignal()
 
     def setInitialActiveMachine(self) -> None:
         active_machine_id = self._application.getPreferences().getValue("cura/active_machine")
@@ -183,12 +184,18 @@ class MachineManager(QObject):
     def addDiscoveredPrinter(self, key: str, name: str, create_callback: Callable[[str], None], machine_type: str) -> None:
         if key not in self._discovered_printers:
             self._discovered_printers[key] = DiscoveredPrinter(key, name, create_callback, machine_type)
+            self.discoveredPrintersChanged.emit()
         else:
             Logger.log("e", "Printer with the key %s was already in the discovered printer list", key)
 
     def removeDiscoveredPrinter(self, key: str) -> None:
         if key in self._discovered_printers:
             del self._discovered_printers[key]
+            self.discoveredPrintersChanged.emit()
+
+    @pyqtProperty("QVariantList", notify = discoveredPrintersChanged)
+    def discoveredPrinters(self):
+        return list(self._discovered_printers.values())
 
     @pyqtSlot(str)
     def addMachineFromDiscoveredPrinter(self, key: str) -> None:

+ 13 - 1
tests/TestMachineManager.py

@@ -11,6 +11,7 @@ from cura.Settings.MachineManager import MachineManager
 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)):
@@ -21,6 +22,7 @@ def extruder_manager(application, container_registry) -> ExtruderManager:
 
     return manager
 
+
 @pytest.fixture()
 def machine_manager(application, extruder_manager, container_registry) -> MachineManager:
     application.getExtruderManager = MagicMock(return_value = extruder_manager)
@@ -49,4 +51,14 @@ 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")
+    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