Task 1: Simplify Capability; extend BoundEntity
- Make href Optional[str] = None for pattern capabilities - Remove observe field (v2 architecture observes all hrefs) - Add rt_filter, match_fn, key_fn fields to Capability - Add entities default value tuple[()] to Capability - Add key_override field to BoundEntity - Update _key() to use key_override when present - Update _make_observe_paths() to observe all unique hrefs (OBSERVE as accelerator) - Guard _build() to skip pattern capabilities (href is None) - Add test_bound_entity_key_override_takes_precedence test - Update test_capability_defaults to remove observe assertion All 61 tests passing (60 existing + 1 new).
This commit is contained in:
1 parent
1a76bf6d47
commit
81d97e2fb5
6 files changed
+42
-7
No files matched your search
@@ -57,3 +57,31 @@ def test_switch_discovery_config_has_correct_payloads(dishwasher_resources):
|
||||
assert cfg['state_off'] == 'Off'
|
||||
assert 'On' in cfg['value_template']
|
||||
assert 'Off' in cfg['value_template']
|
||||
|
||||
|
||||
def test_bound_entity_key_override_takes_precedence():
|
||||
from samsung_appliance.registry.adapter import _key
|
||||
from samsung_appliance.registry.discovery import BoundEntity
|
||||
from samsung_appliance.registry.entities import SensorDesc
|
||||
|
||||
cap = common.ENERGY_METER
|
||||
desc = SensorDesc(
|
||||
key='power_watts',
|
||||
field='x.com.samsung.da.power',
|
||||
unit='W',
|
||||
device_class='power',
|
||||
state_class='measurement',
|
||||
value_fn=lambda x: x,
|
||||
)
|
||||
|
||||
# Without key_override, should use desc.key
|
||||
b1 = BoundEntity(href='/power/vs/0', capability=cap, desc=desc, instance='')
|
||||
assert _key(b1) == 'power_watts'
|
||||
|
||||
# With key_override, should use key_override
|
||||
b2 = BoundEntity(href='/power/vs/0', capability=cap, desc=desc, instance='', key_override='foo')
|
||||
assert _key(b2) == 'foo'
|
||||
|
||||
# key_override with instance suffix should preserve instance suffix
|
||||
b3 = BoundEntity(href='/power/vs/0', capability=cap, desc=desc, instance='_1', key_override='bar')
|
||||
assert _key(b3) == 'bar_1'
|
||||
@@ -6,7 +6,6 @@ def test_capability_defaults():
|
||||
c = Capability(href='/kidslock/vs/0',
|
||||
entities=(BinarySensorDesc(key='child_lock', field='x.com.samsung.da.kidsLock'),))
|
||||
assert c.poll_tier == 'warm'
|
||||
assert c.observe is True
|
||||
assert c.active_when is None
|
||||
assert len(c.entities) == 1
|
||||
|
||||
|
||||
Reference in new issue
Block a user