TestContainerManager.py 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from unittest import TestCase
  2. from unittest.mock import MagicMock
  3. from PyQt5.QtCore import QUrl
  4. from UM.MimeTypeDatabase import MimeTypeDatabase
  5. from cura.Settings.ContainerManager import ContainerManager
  6. import tempfile
  7. import os
  8. class TestContainerManager(TestCase):
  9. def setUp(self):
  10. self._application = MagicMock()
  11. self._container_registry = MagicMock()
  12. self._machine_manager = MagicMock()
  13. self._mocked_mime = MagicMock()
  14. self._mocked_mime.preferredSuffix = "omg"
  15. self._mocked_mime.suffixes = ["omg"]
  16. self._mocked_mime.comment = "UnitTest!"
  17. self._mocked_container = MagicMock()
  18. self._mocked_container_data = "SOME DATA :D"
  19. self._mocked_container.serialize = MagicMock(return_value = self._mocked_container_data)
  20. self._containers_meta_data = [{"id": "test", "test_data": "omg"}]
  21. self._container_registry.findContainersMetadata = MagicMock(return_value = self._containers_meta_data)
  22. self._container_registry.getMimeTypeForContainer = MagicMock(return_value = self._mocked_mime)
  23. self._container_registry.findContainers = MagicMock(return_value = [self._mocked_container])
  24. self._application.getContainerRegistry = MagicMock(return_value = self._container_registry)
  25. self._application.getMachineManager = MagicMock(return_value = self._machine_manager)
  26. # Destroy the previous instance of the container manager
  27. if ContainerManager.getInstance() is not None:
  28. ContainerManager._ContainerManager__instance = None
  29. self._container_manager = ContainerManager(self._application)
  30. MimeTypeDatabase.addMimeType(self._mocked_mime)
  31. def tearDown(self):
  32. MimeTypeDatabase.removeMimeType(self._mocked_mime)
  33. def test_getContainerMetaDataEntry(self):
  34. assert self._container_manager.getContainerMetaDataEntry("test", "test_data") == "omg"
  35. assert self._container_manager.getContainerMetaDataEntry("test", "entry_that_is_not_defined") == ""
  36. def test_clearUserContainer(self):
  37. self._container_manager.clearUserContainers()
  38. assert self._machine_manager.activeMachine.userChanges.clear.call_count == 1
  39. def test_getContainerNameFilters(self):
  40. # If nothing is added, we still expect to get the all files filter
  41. assert self._container_manager.getContainerNameFilters("") == ['All Files (*)']
  42. # Pretend that a new type was added.
  43. self._container_registry.getContainerTypes = MagicMock(return_value=[("None", None)])
  44. assert self._container_manager.getContainerNameFilters("") == ['UnitTest! (*.omg)', 'All Files (*)']
  45. def test_exportContainerUnknownFileType(self):
  46. # The filetype is not known, so this should cause an error!
  47. assert self._container_manager.exportContainer("test", "zomg", "whatever")["status"] == "error"
  48. def test_exportContainerInvalidPath(self):
  49. assert self._container_manager.exportContainer("test", "zomg", "")["status"] == "error"
  50. assert self._container_manager.exportContainer("test", "zomg", QUrl())["status"] == "error"
  51. def test_exportContainerInvalidId(self):
  52. assert self._container_manager.exportContainer("", "whatever", "whatever")["status"] == "error"
  53. def test_exportContainer(self):
  54. with tempfile.TemporaryDirectory() as tmpdirname:
  55. result = self._container_manager.exportContainer("test", "whatever", os.path.join(tmpdirname, "whatever.omg"))
  56. assert(os.path.exists(result["path"]))
  57. with open(result["path"], "r", encoding="utf-8") as f:
  58. assert f.read() == self._mocked_container_data