Browse Source

Add additional tests for the material manager

Jaime van Kessel 5 years ago
parent
commit
18f89529a7
1 changed files with 85 additions and 5 deletions
  1. 85 5
      tests/TestMaterialManager.py

+ 85 - 5
tests/TestMaterialManager.py

@@ -24,21 +24,101 @@ def test_initialize(application):
     assert manager.getMaterialGroup("test").name == "test"
 
 
-def test_getAvailableMaterials(application):
+def test_getMaterialGroupListByGUID(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 manager.getMaterialGroupListByGUID("TEST!")[0].name == "test"
+    assert manager.getMaterialGroupListByGUID("TEST2!")[0].name == "base_material"
 
-    assert "base_material" in available_materials
-    assert "test" in available_materials
 
+def test_getRootMaterialIDforDiameter(application):
+    with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
+        manager = MaterialManager(mocked_registry)
+    manager.initialize()
 
-def test_getMaterialNode(application):
+    assert manager.getRootMaterialIDForDiameter("base_material", "3") == "base_material"
+
+
+def test_getMaterialNodeByTypeMachineHasNoMaterials(application):
+    with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
+        manager = MaterialManager(mocked_registry)
+    manager.initialize()
+
+    mocked_stack = MagicMock()
+    assert manager.getMaterialNodeByType(mocked_stack, "0", "nozzle", "", "") is None
+
+
+def test_getMaterialNodeByTypeMachineHasMaterialsButNoMaterialFound(application):
+    with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
+        manager = MaterialManager(mocked_registry)
+    manager.initialize()
+
+    mocked_stack = MagicMock()
+    mocked_stack.definition.getMetaDataEntry = MagicMock(return_value = True)  # For the "has_materials" metadata
+
+    assert manager.getMaterialNodeByType(mocked_stack, "0", "nozzle", "", "") is None
+
+
+def test_getMaterialNodeByTypeMachineHasMaterialsAndMaterialExists(application):
     with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
         manager = MaterialManager(mocked_registry)
     manager.initialize()
+    mocked_result = MagicMock()
+    manager.getMaterialNode = MagicMock(return_value = mocked_result)
+    mocked_stack = MagicMock()
+    mocked_stack.definition.getMetaDataEntry = MagicMock(return_value = True)  # For the "has_materials" metadata
+
+    assert manager.getMaterialNodeByType(mocked_stack, "0", "nozzle", "", "TEST!") is mocked_result
+
+
+def test_getAllMaterialGroups(application):
+    with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
+        manager = MaterialManager(mocked_registry)
+    manager.initialize()
+
+    material_groups = manager.getAllMaterialGroups()
+
+    assert "base_material" in material_groups
+    assert "test" in material_groups
+    assert material_groups["base_material"].name == "base_material"
+    assert material_groups["test"].name == "test"
+
+
+class TestAvailableMaterials:
+    def test_happy(self, 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_wrongDiameter(self, 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, 200)
+        assert available_materials == {} # Nothing found.
+
+    def test_excludedMaterials(self, application):
+        with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
+            manager = MaterialManager(mocked_registry)
+        manager.initialize()
+        with patch.object(mocked_definition, "getMetaDataEntry", MagicMock(return_value = ["test"])):
+            available_materials = manager.getAvailableMaterials(mocked_definition, None, None, 3)
+        assert "base_material" in available_materials
+        assert "test" not in available_materials
+
+
+def test_getMaterialNode(application):
+    with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)):
+        manager = MaterialManager(mocked_registry)
+    manager._updateMaps()
 
     assert manager.getMaterialNode("fdmmachine", None, None, 3, "base_material").getMetaDataEntry("id") == "test"