1 2 3from unittest.mock import MagicMock 4 5import pytest 6 7from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel 8from cura.PrinterOutput.Models.ExtruderConfigurationModel import ExtruderConfigurationModel 9 10test_validate_data_get_set = [ 11 {"attribute": "extruderConfigurations", "value": [ExtruderConfigurationModel()]}, 12 {"attribute": "buildplateConfiguration", "value": "BHDHAHHADAD"}, 13 {"attribute": "printerType", "value": ":(", "check_signal": False}, 14] 15 16 17@pytest.mark.parametrize("data", test_validate_data_get_set) 18def test_getAndSet(data): 19 model = PrinterConfigurationModel() 20 21 # Convert the first letter into a capital 22 attribute = list(data["attribute"]) 23 attribute[0] = attribute[0].capitalize() 24 attribute = "".join(attribute) 25 26 # mock the correct emit 27 model.configurationChanged = MagicMock() 28 signal = model.configurationChanged 29 30 # Attempt to set the value 31 getattr(model, "set" + attribute)(data["value"]) 32 33 # Check if signal fired. 34 if data.get("check_signal", True): 35 assert signal.emit.call_count == 1 36 37 # Ensure that the value got set 38 assert getattr(model, data["attribute"]) == data["value"] 39 40 # Attempt to set the value again 41 getattr(model, "set" + attribute)(data["value"]) 42 43 # The signal should not fire again 44 if data.get("check_signal", True): 45 assert signal.emit.call_count == 1 46