Просмотр исходного кода

Add test for getting quality groups from the container tree

Finally it works.

Done during turbo testing and tooling.
Ghostkeeper 5 лет назад
Родитель
Сommit
5ae248341b
2 измененных файлов с 55 добавлено и 3 удалено
  1. 53 1
      tests/Machines/TestMachineNode.py
  2. 2 2
      tests/Settings/TestCuraStackBuilder.py

+ 53 - 1
tests/Machines/TestMachineNode.py

@@ -60,4 +60,56 @@ def test_metadataProperties(container_registry):
     assert node.exclude_materials == metadata_dict["exclude_materials"]
     assert node.preferred_variant_name == metadata_dict["preferred_variant_name"]
     assert node.preferred_material == metadata_dict["preferred_material"]
-    assert node.preferred_quality_type == metadata_dict["preferred_quality_type"]
+    assert node.preferred_quality_type == metadata_dict["preferred_quality_type"]
+
+##  Test getting quality groups when there are quality profiles available for
+#   the requested configurations on two extruders.
+def test_getQualityGroupsBothExtrudersAvailable():
+    # Create a machine node without constructing the tree beneath it. We don't want to depend on that for this test.
+    empty_container_registry = MagicMock()
+    empty_container_registry.findContainersMetadata = MagicMock(return_value = [metadata_dict])  # Still contain the MachineNode's own metadata for the constructor.
+    empty_container_registry.findInstanceContainersMetadata = MagicMock(return_value = [])
+    with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = empty_container_registry)):
+        with patch("cura.Machines.MachineNode.MachineNode._loadAll", MagicMock()):
+            machine_node = MachineNode("machine_1")
+
+    # Prepare a tree inside the machine node.
+    extruder_0_node = MagicMock(quality_type = "quality_type_1")
+    extruder_1_node = MagicMock(quality_type = "quality_type_1")  # Same quality type, so this is the one that can be returned.
+    machine_node.variants = {
+        "variant_1": MagicMock(
+            materials = {
+                "material_1": MagicMock(
+                    qualities = {
+                        "quality_1": extruder_0_node
+                    }
+                )
+            }
+        ),
+        "variant_2": MagicMock(
+            materials = {
+                "material_2": MagicMock(
+                    qualities = {
+                        "quality_2": extruder_1_node
+                    }
+                )
+            }
+        )
+    }
+    global_node = MagicMock(
+        container = MagicMock(id = "global_quality_container"),  # Needs to exist, otherwise it won't add this quality type.
+        getMetaDataEntry = lambda _, __: "Global Quality Profile Name"
+    )
+    machine_node.global_qualities = {
+        "quality_type_1": global_node
+    }
+
+    # Request the quality groups for the variants in the machine tree.
+    result = machine_node.getQualityGroups(["variant_1", "variant_2"], ["material_1", "material_2"], [True, True])
+
+    assert "quality_type_1" in result, "This quality type was available for both extruders."
+    assert result["quality_type_1"].node_for_global == global_node
+    assert result["quality_type_1"].nodes_for_extruders[0] == extruder_0_node
+    assert result["quality_type_1"].nodes_for_extruders[1] == extruder_1_node
+    assert result["quality_type_1"].name == global_node.getMetaDataEntry("name", "Unnamed Profile")
+    assert result["quality_type_1"].quality_type == "quality_type_1"

+ 2 - 2
tests/Settings/TestCuraStackBuilder.py

@@ -56,7 +56,7 @@ def test_createMachine(application, container_registry, definition_container, gl
                        quality_container, intent_container, quality_changes_container):
     variant_manager = MagicMock(name = "Variant Manager")
     quality_manager = MagicMock(name = "Quality Manager")
-    global_variant_node = MagicMock( name = "global variant node")
+    global_variant_node = MagicMock(name = "global variant node")
     global_variant_node.container = global_variant
 
     variant_manager.getDefaultVariantNode = MagicMock(return_value = global_variant_node)
@@ -98,7 +98,7 @@ def test_createExtruderStack(application, definition_container, global_variant,
     application.empty_quality_container = quality_container
     application.empty_intent_container = intent_container
     application.empty_quality_changes_container = quality_changes_container
-    with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)):
+    with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)):
         extruder_stack = CuraStackBuilder.createExtruderStack("Whatever", definition_container, "meh", 0,  global_variant, material_instance_container, quality_container)
         assert extruder_stack.variant == global_variant
         assert extruder_stack.material == material_instance_container