Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime van Kessel <nallath@gmail.com>2019-09-06 18:19:23 +0300
committerJaime van Kessel <nallath@gmail.com>2019-09-06 18:19:23 +0300
commit94b6f7864f9d896abcc6d6d5f9fa75760ad00f35 (patch)
treec811ebcc760a03810a0f7b9b75f20346eaf88be8 /plugins/XmlMaterialProfile/tests
parent608ca3e92af478652f6c67f814f39417e039247a (diff)
Add some tests for XMLMaterialProfile
Diffstat (limited to 'plugins/XmlMaterialProfile/tests')
-rw-r--r--plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py b/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py
new file mode 100644
index 0000000000..9658328c8a
--- /dev/null
+++ b/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py
@@ -0,0 +1,65 @@
+from unittest.mock import patch, MagicMock
+import sys
+import os
+
+# Prevents error: "PyCapsule_GetPointer called with incorrect name" with conflicting SIP configurations between Arcus and PyQt: Import Arcus and Savitar first!
+import Savitar # Dont remove this line
+import Arcus # No really. Don't. It needs to be there!
+from UM.Qt.QtApplication import QtApplication # QtApplication import is required, even though it isn't used.
+
+import pytest
+import XmlMaterialProfile
+
+def createXmlMaterialProfile(material_id):
+ try:
+ return XmlMaterialProfile.XmlMaterialProfile.XmlMaterialProfile(material_id)
+ except AttributeError:
+ return XmlMaterialProfile.XmlMaterialProfile(material_id)
+
+
+def test_setName():
+ material_1 = createXmlMaterialProfile("herpderp")
+ material_2 = createXmlMaterialProfile("OMGZOMG")
+
+ material_1.getMetaData()["base_file"] = "herpderp"
+ material_2.getMetaData()["base_file"] = "herpderp"
+
+ container_registry = MagicMock()
+ container_registry.isReadOnly = MagicMock(return_value = False)
+ container_registry.findInstanceContainers = MagicMock(return_value = [material_1, material_2])
+
+ with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)):
+ material_1.setName("beep!")
+
+ assert material_1.getName() == "beep!"
+ assert material_2.getName() == "beep!"
+
+
+def test_setDirty():
+ material_1 = createXmlMaterialProfile("herpderp")
+ material_2 = createXmlMaterialProfile("OMGZOMG")
+
+ material_1.getMetaData()["base_file"] = "herpderp"
+ material_2.getMetaData()["base_file"] = "herpderp"
+
+ container_registry = MagicMock()
+ container_registry.isReadOnly = MagicMock(return_value=False)
+ container_registry.findContainers = MagicMock(return_value=[material_1, material_2])
+
+ # Sanity check. Since we did a hacky thing to set the metadata, the container should not be dirty.
+ # But this test assumes that it works like that, so we need to validate that.
+ assert not material_1.isDirty()
+ assert not material_2.isDirty()
+
+ with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)):
+ material_2.setDirty(True)
+
+ assert material_1.isDirty()
+ assert material_2.isDirty()
+
+ # Setting the base material dirty does not set it's child as dirty.
+ with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)):
+ material_1.setDirty(False)
+
+ assert not material_1.isDirty()
+ assert material_2.isDirty() \ No newline at end of file