Browse Source

Add test for instance containers on definition spot

When deserialize finds an instance container in the definition spot and no other container to replace it with, it should raise an exception because stacks must have a definition.

Contributes to issue CURA-3497.
Ghostkeeper 8 years ago
parent
commit
5e9695773a
1 changed files with 7 additions and 0 deletions
  1. 7 0
      tests/Settings/TestGlobalStack.py

+ 7 - 0
tests/Settings/TestGlobalStack.py

@@ -324,6 +324,13 @@ def test_deserializeRemovesWrongContainerClass(global_stack):
 
     assert global_stack.quality == global_stack._empty_instance_container #Replaced with empty.
 
+def test_deserializeWrongDefinitionClass(global_stack):
+    global_stack._containers[cura.Settings.CuraContainerStack._ContainerIndexes.Definition] = getInstanceContainer(container_type = "definition") #Correct type but wrong class.
+
+    with unittest.mock.patch("UM.Settings.ContainerStack.ContainerStack.deserialize", unittest.mock.MagicMock()): #Prevent calling super().deserialize.
+        with pytest.raises(UM.Settings.ContainerStack.InvalidContainerStackError): #Must raise an error that there is no definition container.
+            global_stack.deserialize("")
+
 ##  Tests whether the user changes are being read properly from a global stack.
 @pytest.mark.skip
 @pytest.mark.parametrize("filename,                 user_changes_id", [