Mock ContainerTree instead of ContainerRegistry to test intent manager

Because now it relies on the container tree instead of querying the registry anew every time.
This commit is contained in:
Ghostkeeper 2019-09-23 15:03:24 +02:00
parent 3552484477
commit 7d40d962e8
No known key found for this signature in database
GPG key ID: 86BEF881AE2CF276

View file

@ -11,10 +11,50 @@ from cura.Machines.QualityGroup import QualityGroup
from tests.Settings.MockContainer import MockContainer from tests.Settings.MockContainer import MockContainer
mocked_intent_metadata = [
{"id": "um3_aa4_pla_smooth_normal", "GUID": "abcxyz", "definition": "ultimaker3", "variant": "AA 0.4",
"material_id": "generic_pla", "intent_category": "smooth", "quality_type": "normal"},
{"id": "um3_aa4_pla_strong_abnorm", "GUID": "defqrs", "definition": "ultimaker3", "variant": "AA 0.4",
"material_id": "generic_pla", "intent_category": "strong", "quality_type": "abnorm"}] # type:List[Dict[str, str]]
mocked_qualitygroup_metadata = {
"normal": QualityGroup("um3_aa4_pla_normal", "normal"),
"abnorm": QualityGroup("um3_aa4_pla_abnorm", "abnorm")} # type:Dict[str, QualityGroup]
@pytest.fixture() @pytest.fixture()
def mock_container_tree() -> MagicMock: def mock_container_tree() -> MagicMock:
container_tree = MagicMock() container_tree = MagicMock()
container_tree.getCurrentQualityGroups = MagicMock(return_value = mocked_qualitygroup_metadata) container_tree.getCurrentQualityGroups = MagicMock(return_value = mocked_qualitygroup_metadata)
container_tree.machines = {
"ultimaker3": MagicMock(
variants = {
"AA 0.4": MagicMock(
materials = {
"generic_pla": MagicMock(
qualities = {
"um3_aa4_pla_normal": MagicMock(
intents = {
"smooth": MagicMock(
intent_category = "smooth",
getMetadata = MagicMock(return_value = mocked_intent_metadata[0])
)
}
),
"um3_aa4_pla_abnorm": MagicMock(
intents = {
"strong": MagicMock(
intent_category = "strong",
getMetadata = MagicMock(return_value = mocked_intent_metadata[1])
)
}
)
}
)
}
)
}
)
}
return container_tree return container_tree
@pytest.fixture() @pytest.fixture()
@ -27,17 +67,6 @@ def intent_manager(application, extruder_manager, machine_manager, container_reg
manager = IntentManager() manager = IntentManager()
return manager return manager
mocked_intent_metadata = [
{"id": "um3_aa4_pla_smooth_normal", "GUID": "abcxyz", "definition": "ultimaker3", "variant": "AA 0.4",
"material_id": "generic_pla", "intent_category": "smooth", "quality_type": "normal"},
{"id": "um3_aa4_pla_strong_abnorm", "GUID": "defqrs", "definition": "ultimaker3", "variant": "AA 0.4",
"material_id": "generic_pla", "intent_category": "strong", "quality_type": "abnorm"}] # type:List[Dict[str, str]]
mocked_qualitygroup_metadata = {
"normal": QualityGroup("um3_aa4_pla_normal", "normal"),
"abnorm": QualityGroup("um3_aa4_pla_abnorm", "abnorm")} # type:Dict[str, QualityGroup]
def mockFindMetadata(**kwargs) -> List[Dict[str, Any]]: def mockFindMetadata(**kwargs) -> List[Dict[str, Any]]:
if "id" in kwargs: if "id" in kwargs:
return [x for x in mocked_intent_metadata if x["id"] == kwargs["id"]] return [x for x in mocked_intent_metadata if x["id"] == kwargs["id"]]
@ -82,12 +111,8 @@ def doSetup(application, extruder_manager, container_registry, global_stack) ->
extruder_manager.getUsedExtruderStacks = MagicMock(return_value = [extruder_stack_a, extruder_stack_b]) extruder_manager.getUsedExtruderStacks = MagicMock(return_value = [extruder_stack_a, extruder_stack_b])
def test_intentCategories(application, intent_manager, container_registry): def test_intentCategories(intent_manager, mock_container_tree):
# Mock .findContainersMetadata so we also test .intentMetadatas (the latter is mostly a wrapper around the former). with patch("cura.Machines.ContainerTree.ContainerTree.getInstance", MagicMock(return_value = mock_container_tree)):
container_registry.findContainersMetadata = MagicMock(return_value = mocked_intent_metadata)
with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)):
with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)):
categories = intent_manager.intentCategories("ultimaker3", "AA 0.4", "generic_pla") # type:List[str] categories = intent_manager.intentCategories("ultimaker3", "AA 0.4", "generic_pla") # type:List[str]
assert "default" in categories, "default should always be in categories" assert "default" in categories, "default should always be in categories"
assert "strong" in categories, "strong should be in categories" assert "strong" in categories, "strong should be in categories"