1from unittest.mock import MagicMock
2
3import pytest
4
5from UM.OutputDevice.OutputDevice import OutputDevice
6
7test_validate_data = [
8    {"attribute": "IconName", "value": "blarg"},
9    {"attribute": "ShortDescription", "value": "omg"},
10    {"attribute": "Name", "value": "SHeWhoShallNotBeNamed"},
11    {"attribute": "Description", "value": "OH NOES!"},
12    {"attribute": "Priority", "value": 12}
13]
14
15
16def test_createOutputDevice():
17    output_device = OutputDevice("Random_id")
18    assert output_device.getId() == "Random_id"
19
20
21@pytest.mark.parametrize("data", test_validate_data)
22def test_getAndSet(data):
23    output_device = OutputDevice("Random_id")
24
25    output_device.metaDataChanged = MagicMock()
26    # Attempt to set the value
27    getattr(output_device, "set" + data["attribute"])(data["value"])
28
29    # Ensure that the value got set
30    assert getattr(output_device, "get" + data["attribute"])() == data["value"]
31
32    # Check if signal fired.
33    assert output_device.metaDataChanged.emit.call_count == 1
34
35    # Attempt to set the setter to the same value again.
36    getattr(output_device, "set" + data["attribute"])(data["value"])
37    # Ensure signal fired only once!
38    assert output_device.metaDataChanged.emit.call_count == 1
39