Просмотр исходного кода

ci (device_config): add tests for reading and writing with target range

Issue #4771 appears to report a problem with this.
Jason Rumney 3 дней назад
Родитель
Сommit
7ab3f49a8c
1 измененных файлов с 31 добавлено и 0 удалено
  1. 31 0
      tests/test_device_config.py

+ 31 - 0
tests/test_device_config.py

@@ -907,3 +907,34 @@ async def test_setting_multi_stage_redirect(mocker):
     dps["141"] = True
     async with assert_device_properties_set(device, {"141": False}):
         await main.async_set_value(device, False)
+
+
+def test_reading_target_range(mocker):
+    """Test reading a number that has a target range."""
+    mock_config = {
+        "id": 1,
+        "name": "test",
+        "type": "integer",
+        "range": {"min": 0, "max": 16},
+        "mapping": [{"target_range": {"min": 0, "max": 100}}],
+    }
+    mock_entity = mocker.MagicMock()
+    mock_device = mocker.MagicMock()
+    mock_device.get_property.return_value = 8
+    cfg = TuyaDpsConfig(mock_entity, mock_config)
+    assert cfg.get_value(mock_device) == 50
+
+
+def test_writing_target_range(mocker):
+    """Test writing a number that has a target range."""
+    mock_config = {
+        "id": 1,
+        "name": "test",
+        "type": "integer",
+        "range": {"min": 0, "max": 16},
+        "mapping": [{"target_range": {"min": 0, "max": 100}}],
+    }
+    mock_entity = mocker.MagicMock()
+    mock_device = mocker.MagicMock()
+    cfg = TuyaDpsConfig(mock_entity, mock_config)
+    assert cfg.get_values_to_set(mock_device, 100) == {"1": 16}