TestQualityManager.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. from unittest.mock import MagicMock, patch
  2. import pytest
  3. from cura.Machines.QualityChangesGroup import QualityChangesGroup
  4. from cura.Machines.QualityManager import QualityManager
  5. mocked_stack = MagicMock()
  6. mocked_extruder = MagicMock()
  7. mocked_material = MagicMock()
  8. mocked_material.getMetaDataEntry = MagicMock(return_value = "base_material")
  9. mocked_extruder.material = mocked_material
  10. mocked_stack.extruders = {"0": mocked_extruder}
  11. # These tests are outdated
  12. pytestmark = pytest.mark.skip
  13. @pytest.fixture()
  14. def material_manager():
  15. result = MagicMock()
  16. result.getRootMaterialIDWithoutDiameter = MagicMock(return_value = "base_material")
  17. return result
  18. @pytest.fixture()
  19. def container_registry():
  20. result = MagicMock()
  21. mocked_metadata = [{"id": "test", "definition": "fdmprinter", "quality_type": "normal", "name": "test_name", "global_quality": True, "type": "quality"},
  22. {"id": "test_material", "definition": "fdmprinter", "quality_type": "normal", "name": "test_name_material", "material": "base_material", "type": "quality"},
  23. {"id": "quality_changes_id", "definition": "fdmprinter", "type": "quality_changes", "quality_type": "amazing!", "name": "herp"}]
  24. result.findContainersMetadata = MagicMock(return_value = mocked_metadata)
  25. result.uniqueName = MagicMock(return_value = "uniqueName")
  26. return result
  27. @pytest.fixture()
  28. def quality_mocked_application(material_manager, container_registry):
  29. result = MagicMock()
  30. result.getMaterialManager = MagicMock(return_value=material_manager)
  31. result.getContainerRegistry = MagicMock(return_value=container_registry)
  32. return result
  33. def test_getQualityGroups(quality_mocked_application):
  34. manager = QualityManager(quality_mocked_application)
  35. manager.initialize()
  36. assert "normal" in manager.getQualityGroups(mocked_stack)
  37. def test_getQualityGroupsForMachineDefinition(quality_mocked_application):
  38. manager = QualityManager(quality_mocked_application)
  39. manager.initialize()
  40. assert "normal" in manager.getQualityGroupsForMachineDefinition(mocked_stack)
  41. def test_getQualityChangesGroup(quality_mocked_application):
  42. manager = QualityManager(quality_mocked_application)
  43. manager.initialize()
  44. assert "herp" in manager.getQualityChangesGroups(mocked_stack)
  45. @pytest.mark.skip("Doesn't work on remote")
  46. def test_getDefaultQualityType(quality_mocked_application):
  47. manager = QualityManager(quality_mocked_application)
  48. manager.initialize()
  49. mocked_stack = MagicMock()
  50. mocked_stack.definition.getMetaDataEntry = MagicMock(return_value = "normal")
  51. assert manager.getDefaultQualityType(mocked_stack).quality_type == "normal"
  52. def test_createQualityChanges(quality_mocked_application):
  53. manager = QualityManager(quality_mocked_application)
  54. mocked_quality_changes = MagicMock()
  55. manager._createQualityChanges = MagicMock(return_value = mocked_quality_changes)
  56. manager.initialize()
  57. container_manager = MagicMock()
  58. manager._container_registry.addContainer = MagicMock() # Side effect we want to check.
  59. with patch("cura.Settings.ContainerManager.ContainerManager.getInstance", container_manager):
  60. manager.createQualityChanges("derp")
  61. assert manager._container_registry.addContainer.called_once_with(mocked_quality_changes)
  62. def test_renameQualityChangesGroup(quality_mocked_application):
  63. manager = QualityManager(quality_mocked_application)
  64. manager.initialize()
  65. mocked_container = MagicMock()
  66. quality_changes_group = QualityChangesGroup("zomg", "beep")
  67. quality_changes_group.getAllNodes = MagicMock(return_value = [mocked_container])
  68. # We need to check for "uniqueName" instead of "NEWRANDOMNAMEYAY" because the mocked registry always returns
  69. # "uniqueName" when attempting to generate an unique name.
  70. assert manager.renameQualityChangesGroup(quality_changes_group, "NEWRANDOMNAMEYAY") == "uniqueName"
  71. assert mocked_container.setName.called_once_with("uniqueName")
  72. def test_duplicateQualityChangesQualityOnly(quality_mocked_application):
  73. manager = QualityManager(quality_mocked_application)
  74. manager.initialize()
  75. mocked_quality = MagicMock()
  76. quality_group = MagicMock()
  77. quality_group.getAllNodes = MagicMock(return_value = mocked_quality)
  78. mocked_quality_changes = MagicMock()
  79. # Isolate what we want to test (in this case, we're not interested if createQualityChanges does it's job!)
  80. manager._createQualityChanges = MagicMock(return_value = mocked_quality_changes)
  81. manager._container_registry.addContainer = MagicMock() # Side effect we want to check.
  82. manager.duplicateQualityChanges("zomg", {"quality_group": quality_group, "quality_changes_group": None})
  83. assert manager._container_registry.addContainer.called_once_with(mocked_quality_changes)
  84. def test_duplicateQualityChanges(quality_mocked_application):
  85. manager = QualityManager(quality_mocked_application)
  86. manager.initialize()
  87. mocked_quality = MagicMock()
  88. quality_group = MagicMock()
  89. quality_group.getAllNodes = MagicMock(return_value = mocked_quality)
  90. quality_changes_group = MagicMock()
  91. mocked_quality_changes = MagicMock()
  92. quality_changes_group.getAllNodes = MagicMock(return_value=[mocked_quality_changes])
  93. mocked_quality_changes.duplicate = MagicMock(return_value = mocked_quality_changes)
  94. manager._container_registry.addContainer = MagicMock() # Side effect we want to check.
  95. manager.duplicateQualityChanges("zomg", {"quality_group": quality_group, "quality_changes_group": quality_changes_group})
  96. assert manager._container_registry.addContainer.called_once_with(mocked_quality_changes)