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