diff --git a/roborock/data/code_mappings.py b/roborock/data/code_mappings.py index 6eefd11d..f0279b33 100644 --- a/roborock/data/code_mappings.py +++ b/roborock/data/code_mappings.py @@ -173,8 +173,10 @@ class RoborockCategory(Enum): WET_DRY_VAC = "roborock.wetdryvac" VACUUM = "robot.vacuum.cleaner" WASHING_MACHINE = "roborock.wm" + MOWER = "roborock.mower" UNKNOWN = "UNKNOWN" - def __missing__(self, key): - _LOGGER.warning("Missing key %s from category", key) + @classmethod + def _missing_(cls, value): + _LOGGER.warning("Missing code %s from category", value) return RoborockCategory.UNKNOWN diff --git a/tests/data/test_code_mappings.py b/tests/data/test_code_mappings.py index c59460ac..5cd48fa2 100644 --- a/tests/data/test_code_mappings.py +++ b/tests/data/test_code_mappings.py @@ -4,6 +4,7 @@ import pytest +from roborock import HomeDataProduct, RoborockCategory from roborock.data.b01_q10.b01_q10_code_mappings import B01_Q10_DP @@ -49,3 +50,18 @@ def test_invalid_from_value() -> None: """Test invalid from_value method.""" with pytest.raises(ValueError, match="invalid_value is not a valid value for B01_Q10_DP"): B01_Q10_DP.from_value("invalid_value") + + +def test_homedata_product_unknown_category(): + """Test that HomeDataProduct can handle unknown categories.""" + data = { + "id": "unknown_cat_id", + "name": "Unknown Device", + "model": "roborock.vacuum.a87", + "category": "roborock.random.category", + "schema": [], + } + + product = HomeDataProduct.from_dict(data) + assert product.id == "unknown_cat_id" + assert product.category == RoborockCategory.UNKNOWN