1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- from unittest.mock import patch, MagicMock
- 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()
- def test_serializeNonBaseMaterial():
- material_1 = createXmlMaterialProfile("herpderp")
- material_1.getMetaData()["base_file"] = "omgzomg"
- container_registry = MagicMock()
- container_registry.isReadOnly = MagicMock(return_value=False)
- container_registry.findContainers = MagicMock(return_value=[material_1])
- with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)):
- with pytest.raises(NotImplementedError):
- # This material is not a base material, so it can't be serialized!
- material_1.serialize()
|