Add test for exporting container by means of the containerManager

This commit is contained in:
Jaime van Kessel 2019-03-15 17:02:06 +01:00
parent fd237a9473
commit d0e61f23f1

View file

@ -1,8 +1,12 @@
from unittest import TestCase from unittest import TestCase
from unittest.mock import MagicMock 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): class TestContainerManager(TestCase):
def setUp(self): def setUp(self):
@ -13,12 +17,17 @@ class TestContainerManager(TestCase):
self._mocked_mime = MagicMock() self._mocked_mime = MagicMock()
self._mocked_mime.preferredSuffix = "omg" self._mocked_mime.preferredSuffix = "omg"
self._mocked_mime.suffixes = ["omg"]
self._mocked_mime.comment = "UnitTest!" 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._containers_meta_data = [{"id": "test", "test_data": "omg"}]
self._container_registry.findContainersMetadata = MagicMock(return_value = self._containers_meta_data) self._container_registry.findContainersMetadata = MagicMock(return_value = self._containers_meta_data)
self._container_registry.getMimeTypeForContainer = MagicMock(return_value = self._mocked_mime) 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.getContainerRegistry = MagicMock(return_value = self._container_registry)
self._application.getMachineManager = MagicMock(return_value = self._machine_manager) self._application.getMachineManager = MagicMock(return_value = self._machine_manager)
@ -27,6 +36,10 @@ class TestContainerManager(TestCase):
ContainerManager._ContainerManager__instance = None ContainerManager._ContainerManager__instance = None
self._container_manager = ContainerManager(self._application) self._container_manager = ContainerManager(self._application)
MimeTypeDatabase.addMimeType(self._mocked_mime)
def tearDown(self):
MimeTypeDatabase.removeMimeType(self._mocked_mime)
def test_getContainerMetaDataEntry(self): def test_getContainerMetaDataEntry(self):
assert self._container_manager.getContainerMetaDataEntry("test", "test_data") == "omg" assert self._container_manager.getContainerMetaDataEntry("test", "test_data") == "omg"
@ -43,3 +56,21 @@ class TestContainerManager(TestCase):
# Pretend that a new type was added. # Pretend that a new type was added.
self._container_registry.getContainerTypes = MagicMock(return_value=[("None", None)]) self._container_registry.getContainerTypes = MagicMock(return_value=[("None", None)])
assert self._container_manager.getContainerNameFilters("") == ['UnitTest! (*.omg)', 'All Files (*)'] 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