Files
localthings/tests/test_entities.py
T
Marc Billow cc2c1e5a1f refactor: move samsung_appliance/ into custom_components/localthings/ocf/
Makes the integration fully self-contained for HACS distribution.
Users installing via HACS get everything in one directory; no external
samsung_appliance package needed.

All component imports updated to relative (.ocf.*); all test imports
updated to custom_components.localthings.ocf.*. ocf_root_ca.pem moves
with the package and resolves correctly via Path(__file__).parent.
2026-06-30 16:34:20 -05:00

35 lines
1.3 KiB
Python

from custom_components.localthings.ocf.registry.entities import (
SensorDesc, BinarySensorDesc, SelectDesc, SwitchDesc, ButtonDesc,
NumberDesc, PLATFORM_OF,
)
def test_value_fn_defaults_to_identity():
d = SensorDesc(key='power', field='x.com.samsung.da.instantaneousPower')
assert d.value_fn(42) == 42
def test_descriptions_are_frozen():
d = SensorDesc(key='power', field='f')
try:
d.key = 'other'
except Exception as e:
assert 'frozen' in str(type(e)).lower() or 'cannot' in str(e).lower()
else:
raise AssertionError("expected frozen dataclass")
def test_platform_mapping_covers_all_subclasses():
assert PLATFORM_OF[SensorDesc] == 'sensor'
assert PLATFORM_OF[BinarySensorDesc] == 'binary_sensor'
assert PLATFORM_OF[SelectDesc] == 'select'
assert PLATFORM_OF[SwitchDesc] == 'switch'
assert PLATFORM_OF[ButtonDesc] == 'button'
assert PLATFORM_OF[NumberDesc] == 'number'
def test_select_carries_options_and_write_fn():
d = SelectDesc(key='sound', field='mode', options=('voice', 'tone', 'mute'),
write_fn=lambda p, rep: (['settings', 'sound', 'mode', 'vs', '0'], {'mode': p}))
assert d.write_fn('tone', {}) == (['settings', 'sound', 'mode', 'vs', '0'], {'mode': 'tone'})