mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-14 10:17:52 -06:00
Properly mock Container and ContainerRegistry objects in Global stack test
This commit is contained in:
parent
b6fafb06ed
commit
385d8ac5b5
1 changed files with 40 additions and 6 deletions
|
@ -4,6 +4,8 @@
|
||||||
import os.path #To find the test files.
|
import os.path #To find the test files.
|
||||||
import pytest #This module contains unit tests.
|
import pytest #This module contains unit tests.
|
||||||
import unittest.mock #To monkeypatch some mocks in place of dependencies.
|
import unittest.mock #To monkeypatch some mocks in place of dependencies.
|
||||||
|
import copy
|
||||||
|
import functools
|
||||||
|
|
||||||
import cura.Settings.GlobalStack #The module we're testing.
|
import cura.Settings.GlobalStack #The module we're testing.
|
||||||
from cura.Settings.Exceptions import TooManyExtrudersError, InvalidContainerError, InvalidOperationError #To test raising these errors.
|
from cura.Settings.Exceptions import TooManyExtrudersError, InvalidContainerError, InvalidOperationError #To test raising these errors.
|
||||||
|
@ -12,17 +14,49 @@ from UM.Settings.InstanceContainer import InstanceContainer #To test against the
|
||||||
import UM.Settings.ContainerRegistry
|
import UM.Settings.ContainerRegistry
|
||||||
import UM.Settings.ContainerStack
|
import UM.Settings.ContainerStack
|
||||||
|
|
||||||
|
class MockContainer:
|
||||||
|
def __init__(self, container_id, type = "mock"):
|
||||||
|
self._id = container_id
|
||||||
|
self._type = type
|
||||||
|
|
||||||
|
def getId(self):
|
||||||
|
return self._id
|
||||||
|
|
||||||
|
def getMetaDataEntry(self, entry, default = None):
|
||||||
|
print(entry, self._type)
|
||||||
|
if entry == "type":
|
||||||
|
return self._type
|
||||||
|
|
||||||
|
return default
|
||||||
|
|
||||||
|
propertyChanged = unittest.mock.MagicMock()
|
||||||
|
|
||||||
## Fake container registry that always provides all containers you ask of.
|
## Fake container registry that always provides all containers you ask of.
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def container_registry():
|
def container_registry():
|
||||||
registry = unittest.mock.MagicMock()
|
registry = unittest.mock.MagicMock()
|
||||||
def findContainers(id = None):
|
|
||||||
if not id:
|
registry.typeMetaData = "registry_mock"
|
||||||
return [UM.Settings.ContainerRegistry._EmptyInstanceContainer("test_container")]
|
|
||||||
|
def findInstanceContainers(registry, **kwargs):
|
||||||
|
if "id" not in kwargs:
|
||||||
|
return [MockContainer("test_container", registry.typeMetaData)]
|
||||||
else:
|
else:
|
||||||
return [UM.Settings.ContainerRegistry._EmptyInstanceContainer(id)]
|
return [MockContainer(id, registry.typeMetaData)]
|
||||||
registry.findContainers = findContainers
|
registry.findInstanceContainers = functools.partial(findInstanceContainers, registry)
|
||||||
return registry
|
|
||||||
|
def findContainers(registry, container_type = None, id = None):
|
||||||
|
if not id:
|
||||||
|
return [MockContainer("test_container", registry.typeMetaData)]
|
||||||
|
else:
|
||||||
|
return [MockContainer(id, registry.typeMetaData)]
|
||||||
|
registry.findContainers = functools.partial(findContainers, registry)
|
||||||
|
|
||||||
|
UM.Settings.ContainerRegistry.ContainerRegistry._ContainerRegistry__instance = registry
|
||||||
|
|
||||||
|
yield registry
|
||||||
|
|
||||||
|
UM.Settings.ContainerRegistry.ContainerRegistry._ContainerRegistry__instance = None
|
||||||
|
|
||||||
#An empty global stack to test with.
|
#An empty global stack to test with.
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue