diff --git a/tests/Settings/TestContainerManager.py b/tests/Settings/TestContainerManager.py index aeb1469c41..f4aa140b6b 100644 --- a/tests/Settings/TestContainerManager.py +++ b/tests/Settings/TestContainerManager.py @@ -1,8 +1,12 @@ from unittest import TestCase from unittest.mock import MagicMock -from cura.Settings.ContainerManager import ContainerManager +from PyQt5.QtCore import QUrl +from UM.MimeTypeDatabase import MimeTypeDatabase +from cura.Settings.ContainerManager import ContainerManager +import tempfile +import os class TestContainerManager(TestCase): def setUp(self): @@ -13,12 +17,17 @@ class TestContainerManager(TestCase): self._mocked_mime = MagicMock() self._mocked_mime.preferredSuffix = "omg" + self._mocked_mime.suffixes = ["omg"] self._mocked_mime.comment = "UnitTest!" + self._mocked_container = MagicMock() + self._mocked_container_data = "SOME DATA :D" + self._mocked_container.serialize = MagicMock(return_value = self._mocked_container_data) + self._containers_meta_data = [{"id": "test", "test_data": "omg"}] self._container_registry.findContainersMetadata = MagicMock(return_value = self._containers_meta_data) self._container_registry.getMimeTypeForContainer = MagicMock(return_value = self._mocked_mime) - + self._container_registry.findContainers = MagicMock(return_value = [self._mocked_container]) self._application.getContainerRegistry = MagicMock(return_value = self._container_registry) self._application.getMachineManager = MagicMock(return_value = self._machine_manager) @@ -27,6 +36,10 @@ class TestContainerManager(TestCase): ContainerManager._ContainerManager__instance = None self._container_manager = ContainerManager(self._application) + MimeTypeDatabase.addMimeType(self._mocked_mime) + + def tearDown(self): + MimeTypeDatabase.removeMimeType(self._mocked_mime) def test_getContainerMetaDataEntry(self): assert self._container_manager.getContainerMetaDataEntry("test", "test_data") == "omg" @@ -43,3 +56,21 @@ class TestContainerManager(TestCase): # Pretend that a new type was added. self._container_registry.getContainerTypes = MagicMock(return_value=[("None", None)]) assert self._container_manager.getContainerNameFilters("") == ['UnitTest! (*.omg)', 'All Files (*)'] + + def test_exportContainerUnknownFileType(self): + # The filetype is not known, so this should cause an error! + assert self._container_manager.exportContainer("test", "zomg", "whatever")["status"] == "error" + + def test_exportContainerInvalidPath(self): + assert self._container_manager.exportContainer("test", "zomg", "")["status"] == "error" + assert self._container_manager.exportContainer("test", "zomg", QUrl())["status"] == "error" + + def test_exportContainerInvalidId(self): + assert self._container_manager.exportContainer("", "whatever", "whatever")["status"] == "error" + + def test_exportContainer(self): + with tempfile.TemporaryDirectory() as tmpdirname: + result = self._container_manager.exportContainer("test", "whatever", os.path.join(tmpdirname, "whatever.omg")) + assert(os.path.exists(result["path"])) + with open(result["path"], "r", encoding="utf-8") as f: + assert f.read() == self._mocked_container_data