From b8c215203cc4baa245ebaf5be61c633c1b8c51aa Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Thu, 1 Feb 2024 10:58:25 +0100 Subject: [PATCH 1/2] Add test --- tests/devices.py | 20 ++++++++++++++++++++ tests/test_device.py | 9 +++++++++ 2 files changed, 29 insertions(+) diff --git a/tests/devices.py b/tests/devices.py index 85ad925d..a443b430 100644 --- a/tests/devices.py +++ b/tests/devices.py @@ -308,3 +308,23 @@ "9054": 0, "9084": " 83 6f b7 c 7a f4 8a 14 4a 94 4a 94 41 e0 a2 4f", } + +DEVICE_WITHOUT_FIRMWARE_VERSION = { + "9001": "TRADFRI on/off switch 22", + "9003": 65639, + "9002": 1638114398, + "9020": 1706473768, + "9054": 0, + "9019": 1, + "3": { + "0": "IKEA of Sweden", + "1": "TRADFRI on/off switch", + "2": "", + "6": 3, + "7": 4549, + "8": 0, + "9": 50, + }, + "5750": 0, + "15009": [{"9003": 0}], +} diff --git a/tests/test_device.py b/tests/test_device.py index bb03223e..32252914 100644 --- a/tests/test_device.py +++ b/tests/test_device.py @@ -27,6 +27,7 @@ from .devices import ( BLIND, + DEVICE_WITHOUT_FIRMWARE_VERSION, LIGHT_CWS, LIGHT_PHILIPS, LIGHT_W, @@ -380,6 +381,14 @@ def test_device_info_properties(device): assert info.power_source_str == "Internal Battery" +@pytest.mark.parametrize( + "device", [DEVICE_WITHOUT_FIRMWARE_VERSION], indirect=["device"] +) +def test_device_without_firmware_version(device): + """Test device without firmware version.""" + assert device.device_info.firmware_version is None + + def test_set_name(device): """Test set name.""" command = device.set_name("New name") From e2b7faee706e4e8dd45648a54f3d7a000aa4989d Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Thu, 1 Feb 2024 10:59:59 +0100 Subject: [PATCH 2/2] Make device info firmware version optional --- pytradfri/device/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pytradfri/device/__init__.py b/pytradfri/device/__init__.py index 0d9e0c29..222300ad 100644 --- a/pytradfri/device/__init__.py +++ b/pytradfri/device/__init__.py @@ -43,7 +43,7 @@ class DeviceInfoResponse(BaseModel): manufacturer: str = Field(alias=ATTR_DEVICE_MANUFACTURER) model_number: str = Field(alias=ATTR_DEVICE_MODEL_NUMBER) serial: str = Field(alias=ATTR_DEVICE_SERIAL) - firmware_version: str = Field(alias=ATTR_DEVICE_FIRMWARE_VERSION) + firmware_version: str | None = Field(alias=ATTR_DEVICE_FIRMWARE_VERSION) power_source: int | None = Field(alias=ATTR_DEVICE_POWER_SOURCE) battery_level: int | None = Field(alias=ATTR_DEVICE_BATTERY) @@ -201,7 +201,7 @@ def serial(self) -> str: return self.raw.serial @property - def firmware_version(self) -> str: + def firmware_version(self) -> str | None: """Return current firmware version of device.""" return self.raw.firmware_version