diff --git a/tests/Machines/TestMachineNode.py b/tests/Machines/TestMachineNode.py index 270c2503e6..347059adb9 100644 --- a/tests/Machines/TestMachineNode.py +++ b/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"] \ No newline at end of file + 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" \ No newline at end of file diff --git a/tests/Settings/TestCuraStackBuilder.py b/tests/Settings/TestCuraStackBuilder.py index cf4496d0a9..aebde3406f 100644 --- a/tests/Settings/TestCuraStackBuilder.py +++ b/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