Add configurable optimizer area sensors

This commit is contained in:
2026-08-10 12:25:43 +02:00
parent dc6b2dc71a
commit 02bb4a831e
16 changed files with 643 additions and 21 deletions
+51
View File
@@ -0,0 +1,51 @@
"""Tests for optimizer area mappings."""
from __future__ import annotations
import pytest
from custom_components.solaredge_optimizers.areas import (
AreaMappingError,
default_area_mapping,
parse_area_mapping,
serialize_area_mapping,
)
def test_site_default_mapping() -> None:
"""Load the six known areas for site 4886699."""
mapping = default_area_mapping("4886699")
assert set(mapping) == {"west1", "west2", "gaube", "süd", "ost1", "ost2"}
assert sum(len(optimizer_ids) for optimizer_ids in mapping.values()) == 34
def test_parse_and_serialize_mapping() -> None:
"""Normalize and serialize a valid mapping."""
mapping = parse_area_mapping(
{"west": ["1.1.1", "1.1.2"]},
{"1.1.1", "1.1.2"},
)
assert mapping == {"west": ("1.1.1", "1.1.2")}
assert serialize_area_mapping(mapping) == {"west": ["1.1.1", "1.1.2"]}
@pytest.mark.parametrize(
("mapping", "error"),
[
({"west": []}, "empty_area"),
({"west": ["1.1.99"]}, "unknown_optimizer"),
(
{"west": ["1.1.1"], "roof": ["1.1.1"]},
"duplicate_optimizer",
),
({"süd": ["1.1.1"], "sud": ["1.1.2"]}, "duplicate_area"),
],
)
def test_reject_invalid_mapping(mapping: object, error: str) -> None:
"""Reject invalid mappings with a translated error key."""
with pytest.raises(AreaMappingError) as raised:
parse_area_mapping(mapping, {"1.1.1", "1.1.2"})
assert raised.value.translation_key == error