diff --git a/cura/Machines/MaterialManager.py b/cura/Machines/MaterialManager.py index aff79218c8..cc384d252b 100644 --- a/cura/Machines/MaterialManager.py +++ b/cura/Machines/MaterialManager.py @@ -219,7 +219,7 @@ class MaterialManager(QObject): root_material_id = material_metadata["base_file"] definition = material_metadata["definition"] - approximate_diameter = material_metadata["approximate_diameter"] + approximate_diameter = str(material_metadata["approximate_diameter"]) if approximate_diameter not in self._diameter_machine_nozzle_buildplate_material_map: self._diameter_machine_nozzle_buildplate_material_map[approximate_diameter] = {} @@ -332,7 +332,6 @@ class MaterialManager(QObject): buildplate_node = nozzle_node.getChildNode(buildplate_name) nodes_to_check = [buildplate_node, nozzle_node, machine_node, default_machine_node] - # Fallback mechanism of finding materials: # 1. buildplate-specific material # 2. nozzle-specific material diff --git a/tests/TestMaterialManager.py b/tests/TestMaterialManager.py index ab5a777972..2d66dfa4fd 100644 --- a/tests/TestMaterialManager.py +++ b/tests/TestMaterialManager.py @@ -4,10 +4,16 @@ from cura.Machines.MaterialManager import MaterialManager mocked_registry = MagicMock() -material_1 = {"id": "test", "GUID":"TEST!", "base_file": "base_material", "definition": "fdmmachine", "approximate_diameter": 3} -material_2 = {"id": "base_material", "GUID":"TEST2!", "base_file": "test", "definition": "fdmmachine", "approximate_diameter": 3} +material_1 = {"id": "test", "GUID":"TEST!", "base_file": "base_material", "definition": "fdmmachine", "approximate_diameter": 3, "brand": "generic"} +material_2 = {"id": "base_material", "GUID": "TEST2!", "base_file": "test", "definition": "fdmmachine", "approximate_diameter": 3} mocked_registry.findContainersMetadata = MagicMock(return_value = [material_1, material_2]) + +mocked_definition = MagicMock() +mocked_definition.getId = MagicMock(return_value = "fdmmachine") +mocked_definition.getMetaDataEntry = MagicMock(return_value = []) + + def test_initialize(application): # Just test if the simple loading works with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): @@ -16,3 +22,22 @@ def test_initialize(application): # Double check that we actually got some material nodes assert manager.getMaterialGroup("base_material").name == "base_material" assert manager.getMaterialGroup("test").name == "test" + + +def test_getAvailableMaterials(application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + + available_materials = manager.getAvailableMaterials(mocked_definition, None, None, 3) + + assert "base_material" in available_materials + assert "test" in available_materials + + +def test_getMaterialNode(application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + + assert manager.getMaterialNode("fdmmachine", None, None, 3, "base_material").getMetaDataEntry("id") == "test"