From 4acc480544b23923ae5fa29d3cd211d970a2fbad Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Fri, 15 Feb 2019 15:27:57 +0100 Subject: [PATCH] Also add tests for configurationModel --- cura/PrinterOutput/ConfigurationModel.py | 4 +- tests/PrinterOutput/TestConfigurationModel.py | 45 +++++++++++++++++++ tests/PrinterOutput/TestPrinterOutputModel.py | 1 - 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 tests/PrinterOutput/TestConfigurationModel.py diff --git a/cura/PrinterOutput/ConfigurationModel.py b/cura/PrinterOutput/ConfigurationModel.py index f9d0c7e36b..312e3cffb0 100644 --- a/cura/PrinterOutput/ConfigurationModel.py +++ b/cura/PrinterOutput/ConfigurationModel.py @@ -40,7 +40,9 @@ class ConfigurationModel(QObject): return self._extruder_configurations def setBuildplateConfiguration(self, buildplate_configuration: str) -> None: - self._buildplate_configuration = buildplate_configuration + if self._buildplate_configuration != buildplate_configuration: + self._buildplate_configuration = buildplate_configuration + self.configurationChanged.emit() @pyqtProperty(str, fset = setBuildplateConfiguration, notify = configurationChanged) def buildplateConfiguration(self) -> str: diff --git a/tests/PrinterOutput/TestConfigurationModel.py b/tests/PrinterOutput/TestConfigurationModel.py new file mode 100644 index 0000000000..d6b7b885c2 --- /dev/null +++ b/tests/PrinterOutput/TestConfigurationModel.py @@ -0,0 +1,45 @@ + + +from unittest.mock import MagicMock + +import pytest + +from cura.PrinterOutput.ConfigurationModel import ConfigurationModel +from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel + +test_validate_data_get_set = [ + {"attribute": "extruderConfigurations", "value": [ExtruderConfigurationModel()]}, + {"attribute": "buildplateConfiguration", "value": "BHDHAHHADAD"}, + {"attribute": "printerType", "value": ":(", "check_signal": False}, +] + + +@pytest.mark.parametrize("data", test_validate_data_get_set) +def test_getAndSet(data): + model = ConfigurationModel() + + # Convert the first letter into a capital + attribute = list(data["attribute"]) + attribute[0] = attribute[0].capitalize() + attribute = "".join(attribute) + + # mock the correct emit + model.configurationChanged = MagicMock() + signal = model.configurationChanged + + # Attempt to set the value + getattr(model, "set" + attribute)(data["value"]) + + # Check if signal fired. + if data.get("check_signal", True): + assert signal.emit.call_count == 1 + + # Ensure that the value got set + assert getattr(model, data["attribute"]) == data["value"] + + # Attempt to set the value again + getattr(model, "set" + attribute)(data["value"]) + + # The signal should not fire again + if data.get("check_signal", True): + assert signal.emit.call_count == 1 diff --git a/tests/PrinterOutput/TestPrinterOutputModel.py b/tests/PrinterOutput/TestPrinterOutputModel.py index f0ed3af633..f42149d50f 100644 --- a/tests/PrinterOutput/TestPrinterOutputModel.py +++ b/tests/PrinterOutput/TestPrinterOutputModel.py @@ -4,7 +4,6 @@ from unittest.mock import MagicMock import pytest -from cura.PrinterOutput.ConfigurationModel import ConfigurationModel from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel