"""Tests for the no-/information/vs/0, no-burner-status range variant (NE63B8411SS-class, issue #74).""" from custom_components.localthings.registry.adapter import flatten from custom_components.localthings.registry.by_type import for_device_by_resources from custom_components.localthings.registry.capabilities import range as range_caps from custom_components.localthings.registry.discovery import discover from tests.conftest import _load_device def _range(): resources = _load_device('range_no_info') reg = for_device_by_resources(resources) return reg, resources def _state(): reg, resources = _range() bound = discover(resources, reg.capabilities, reg.pattern_capabilities) return flatten(bound, resources) def test_resolves_to_range_registry(): reg, _ = _range() assert reg is not None and reg.name == 'range' def test_no_unbound_hrefs(): """Every resource in the issue #74 dump binds or is ignored -- clears the coverage-gap repair.""" reg, resources = _range() unbound = [] discover(resources, reg.capabilities, reg.pattern_capabilities, log=unbound.append) assert unbound == [] def test_no_burner_entities(): """This board reports no /cooktop/status/vs/0, so none of range.py's per-burner entities should appear -- only COOKTOP_MONITORING's.""" state = _state() assert not any(k.startswith('burner_') for k in state) def test_expected_entities_present(): state = _state() for key in ( 'power_switch', 'oven_setpoint', 'current_temp_c', 'oven_mode', 'machine_state', 'door_open', 'cloud_connected', 'cooktop_running_state', 'warming_center_state', ): assert key in state, key def test_cooktop_monitoring_reads_live_fields(): desc = next(e for e in range_caps.COOKTOP_MONITORING.entities if e.key == 'cooktop_running_state') assert desc.value_fn('Ready') == 'Ready' desc = next(e for e in range_caps.COOKTOP_MONITORING.entities if e.key == 'warming_center_state') assert desc.value_fn('Off') == 'Off'