async def test_extract_entity_ids_from_area(hass): """Test extract_entity_ids method with areas.""" hass.states.async_set("light.Bowl", STATE_ON) hass.states.async_set("light.Ceiling", STATE_OFF) hass.states.async_set("light.Kitchen", STATE_OFF) device_in_area = dev_reg.DeviceEntry(area_id="test-area") device_no_area = dev_reg.DeviceEntry() device_diff_area = dev_reg.DeviceEntry(area_id="diff-area") mock_device_registry( hass, { device_in_area.id: device_in_area, device_no_area.id: device_no_area, device_diff_area.id: device_diff_area, }, ) entity_in_area = ent_reg.RegistryEntry( entity_id="light.in_area", unique_id="in-area-id", platform="test", device_id=device_in_area.id, ) entity_no_area = ent_reg.RegistryEntry( entity_id="light.no_area", unique_id="no-area-id", platform="test", device_id=device_no_area.id, ) entity_diff_area = ent_reg.RegistryEntry( entity_id="light.diff_area", unique_id="diff-area-id", platform="test", device_id=device_diff_area.id, ) mock_registry( hass, { entity_in_area.entity_id: entity_in_area, entity_no_area.entity_id: entity_no_area, entity_diff_area.entity_id: entity_diff_area, }, ) call = ha.ServiceCall("light", "turn_on", {"area_id": "test-area"}) assert {"light.in_area" } == await service.async_extract_entity_ids(hass, call) call = ha.ServiceCall("light", "turn_on", {"area_id": ["test-area", "diff-area"]}) assert { "light.in_area", "light.diff_area", } == await service.async_extract_entity_ids(hass, call)
async def test_extract_entity_ids_from_area(hass): """Test extract_entity_ids method with areas.""" hass.states.async_set('light.Bowl', STATE_ON) hass.states.async_set('light.Ceiling', STATE_OFF) hass.states.async_set('light.Kitchen', STATE_OFF) device_in_area = dev_reg.DeviceEntry(area_id='test-area') device_no_area = dev_reg.DeviceEntry() device_diff_area = dev_reg.DeviceEntry(area_id='diff-area') mock_device_registry( hass, { device_in_area.id: device_in_area, device_no_area.id: device_no_area, device_diff_area.id: device_diff_area, }) entity_in_area = ent_reg.RegistryEntry( entity_id='light.in_area', unique_id='in-area-id', platform='test', device_id=device_in_area.id, ) entity_no_area = ent_reg.RegistryEntry( entity_id='light.no_area', unique_id='no-area-id', platform='test', device_id=device_no_area.id, ) entity_diff_area = ent_reg.RegistryEntry( entity_id='light.diff_area', unique_id='diff-area-id', platform='test', device_id=device_diff_area.id, ) mock_registry( hass, { entity_in_area.entity_id: entity_in_area, entity_no_area.entity_id: entity_no_area, entity_diff_area.entity_id: entity_diff_area, }) call = ha.ServiceCall('light', 'turn_on', {'area_id': 'test-area'}) assert {'light.in_area'} == \ await service.async_extract_entity_ids(hass, call) call = ha.ServiceCall('light', 'turn_on', {'area_id': ['test-area', 'diff-area']}) assert {'light.in_area', 'light.diff_area'} == \ await service.async_extract_entity_ids(hass, call)
def area_mock(hass): """Mock including area info.""" hass.states.async_set("light.Bowl", STATE_ON) hass.states.async_set("light.Ceiling", STATE_OFF) hass.states.async_set("light.Kitchen", STATE_OFF) device_in_area = dev_reg.DeviceEntry(area_id="test-area") device_no_area = dev_reg.DeviceEntry() device_diff_area = dev_reg.DeviceEntry(area_id="diff-area") mock_device_registry( hass, { device_in_area.id: device_in_area, device_no_area.id: device_no_area, device_diff_area.id: device_diff_area, }, ) entity_in_area = ent_reg.RegistryEntry( entity_id="light.in_area", unique_id="in-area-id", platform="test", device_id=device_in_area.id, ) entity_no_area = ent_reg.RegistryEntry( entity_id="light.no_area", unique_id="no-area-id", platform="test", device_id=device_no_area.id, ) entity_diff_area = ent_reg.RegistryEntry( entity_id="light.diff_area", unique_id="diff-area-id", platform="test", device_id=device_diff_area.id, ) mock_registry( hass, { entity_in_area.entity_id: entity_in_area, entity_no_area.entity_id: entity_no_area, entity_diff_area.entity_id: entity_diff_area, }, )
async def test_async_extract_config_entry_ids(hass): """Test we can find devices that have no entities.""" device_no_entities = dev_reg.DeviceEntry(id="device-no-entities", config_entries={"abc"}) call = ha.ServiceCall( "homeassistant", "reload_config_entry", { "device_id": "device-no-entities", }, ) mock_device_registry( hass, { device_no_entities.id: device_no_entities, }, ) assert await service.async_extract_config_entry_ids(hass, call) == {"abc"}
def zwave_migration_data_fixture(hass): """Return mock zwave migration data.""" zwave_switch_device = dr.DeviceEntry( id=ZWAVE_SWITCH_DEVICE_ID, name_by_user=ZWAVE_SWITCH_DEVICE_NAME, area_id=ZWAVE_SWITCH_DEVICE_AREA, ) zwave_switch_entry = er.RegistryEntry( entity_id=ZWAVE_SWITCH_ENTITY, unique_id=ZWAVE_SWITCH_UNIQUE_ID, platform="zwave", name=ZWAVE_SWITCH_NAME, icon=ZWAVE_SWITCH_ICON, ) zwave_multisensor_device = dr.DeviceEntry( id=ZWAVE_MULTISENSOR_DEVICE_ID, name_by_user=ZWAVE_MULTISENSOR_DEVICE_NAME, area_id=ZWAVE_MULTISENSOR_DEVICE_AREA, ) zwave_source_node_entry = er.RegistryEntry( entity_id=ZWAVE_SOURCE_NODE_ENTITY, unique_id=ZWAVE_SOURCE_NODE_UNIQUE_ID, platform="zwave", name="Z-Wave Source Node", ) zwave_battery_entry = er.RegistryEntry( entity_id=ZWAVE_BATTERY_ENTITY, unique_id=ZWAVE_BATTERY_UNIQUE_ID, platform="zwave", name=ZWAVE_BATTERY_NAME, icon=ZWAVE_BATTERY_ICON, unit_of_measurement="%", ) zwave_power_entry = er.RegistryEntry( entity_id=ZWAVE_POWER_ENTITY, unique_id=ZWAVE_POWER_UNIQUE_ID, platform="zwave", name=ZWAVE_POWER_NAME, icon=ZWAVE_POWER_ICON, unit_of_measurement="W", ) zwave_tampering_entry = er.RegistryEntry( entity_id=ZWAVE_TAMPERING_ENTITY, unique_id=ZWAVE_TAMPERING_UNIQUE_ID, platform="zwave", name=ZWAVE_TAMPERING_NAME, icon=ZWAVE_TAMPERING_ICON, unit_of_measurement="", # Test empty string unit normalization. ) zwave_migration_data = { ZWAVE_SWITCH_ENTITY: { "node_id": 102, "node_instance": 1, "command_class": 37, "command_class_label": "", "value_index": 1, "device_id": zwave_switch_device.id, "domain": zwave_switch_entry.domain, "entity_id": zwave_switch_entry.entity_id, "unique_id": ZWAVE_SWITCH_UNIQUE_ID, "unit_of_measurement": zwave_switch_entry.unit_of_measurement, }, ZWAVE_POWER_ENTITY: { "node_id": 102, "node_instance": 1, "command_class": 50, "command_class_label": "Power", "value_index": 8, "device_id": zwave_switch_device.id, "domain": zwave_power_entry.domain, "entity_id": zwave_power_entry.entity_id, "unique_id": ZWAVE_POWER_UNIQUE_ID, "unit_of_measurement": zwave_power_entry.unit_of_measurement, }, ZWAVE_SOURCE_NODE_ENTITY: { "node_id": 52, "node_instance": 1, "command_class": 113, "command_class_label": "SourceNodeId", "value_index": 1, "device_id": zwave_multisensor_device.id, "domain": zwave_source_node_entry.domain, "entity_id": zwave_source_node_entry.entity_id, "unique_id": ZWAVE_SOURCE_NODE_UNIQUE_ID, "unit_of_measurement": zwave_source_node_entry.unit_of_measurement, }, ZWAVE_BATTERY_ENTITY: { "node_id": 52, "node_instance": 1, "command_class": 128, "command_class_label": "Battery Level", "value_index": 0, "device_id": zwave_multisensor_device.id, "domain": zwave_battery_entry.domain, "entity_id": zwave_battery_entry.entity_id, "unique_id": ZWAVE_BATTERY_UNIQUE_ID, "unit_of_measurement": zwave_battery_entry.unit_of_measurement, }, ZWAVE_TAMPERING_ENTITY: { "node_id": 52, "node_instance": 1, "command_class": 113, "command_class_label": "Burglar", "value_index": 10, "device_id": zwave_multisensor_device.id, "domain": zwave_tampering_entry.domain, "entity_id": zwave_tampering_entry.entity_id, "unique_id": ZWAVE_TAMPERING_UNIQUE_ID, "unit_of_measurement": zwave_tampering_entry.unit_of_measurement, }, } mock_device_registry( hass, { zwave_switch_device.id: zwave_switch_device, zwave_multisensor_device.id: zwave_multisensor_device, }, ) mock_registry( hass, { ZWAVE_SWITCH_ENTITY: zwave_switch_entry, ZWAVE_SOURCE_NODE_ENTITY: zwave_source_node_entry, ZWAVE_BATTERY_ENTITY: zwave_battery_entry, ZWAVE_POWER_ENTITY: zwave_power_entry, ZWAVE_TAMPERING_ENTITY: zwave_tampering_entry, }, ) return zwave_migration_data
def area_mock(hass): """Mock including area info.""" hass.states.async_set("light.Bowl", STATE_ON) hass.states.async_set("light.Ceiling", STATE_OFF) hass.states.async_set("light.Kitchen", STATE_OFF) device_in_area = dev_reg.DeviceEntry(area_id="test-area") device_no_area = dev_reg.DeviceEntry(id="device-no-area-id") device_diff_area = dev_reg.DeviceEntry(area_id="diff-area") device_area_a = dev_reg.DeviceEntry(id="device-area-a-id", area_id="area-a") mock_device_registry( hass, { device_in_area.id: device_in_area, device_no_area.id: device_no_area, device_diff_area.id: device_diff_area, device_area_a.id: device_area_a, }, ) entity_in_own_area = ent_reg.RegistryEntry( entity_id="light.in_own_area", unique_id="in-own-area-id", platform="test", area_id="own-area", ) config_entity_in_own_area = ent_reg.RegistryEntry( entity_id="light.config_in_own_area", unique_id="config-in-own-area-id", platform="test", area_id="own-area", entity_category=EntityCategory.CONFIG, ) hidden_entity_in_own_area = ent_reg.RegistryEntry( entity_id="light.hidden_in_own_area", unique_id="hidden-in-own-area-id", platform="test", area_id="own-area", hidden_by=ent_reg.RegistryEntryHider.USER, ) entity_in_area = ent_reg.RegistryEntry( entity_id="light.in_area", unique_id="in-area-id", platform="test", device_id=device_in_area.id, ) config_entity_in_area = ent_reg.RegistryEntry( entity_id="light.config_in_area", unique_id="config-in-area-id", platform="test", device_id=device_in_area.id, entity_category=EntityCategory.CONFIG, ) hidden_entity_in_area = ent_reg.RegistryEntry( entity_id="light.hidden_in_area", unique_id="hidden-in-area-id", platform="test", device_id=device_in_area.id, hidden_by=ent_reg.RegistryEntryHider.USER, ) entity_in_other_area = ent_reg.RegistryEntry( entity_id="light.in_other_area", unique_id="in-area-a-id", platform="test", device_id=device_in_area.id, area_id="other-area", ) entity_assigned_to_area = ent_reg.RegistryEntry( entity_id="light.assigned_to_area", unique_id="assigned-area-id", platform="test", device_id=device_in_area.id, area_id="test-area", ) entity_no_area = ent_reg.RegistryEntry( entity_id="light.no_area", unique_id="no-area-id", platform="test", device_id=device_no_area.id, ) config_entity_no_area = ent_reg.RegistryEntry( entity_id="light.config_no_area", unique_id="config-no-area-id", platform="test", device_id=device_no_area.id, entity_category=EntityCategory.CONFIG, ) hidden_entity_no_area = ent_reg.RegistryEntry( entity_id="light.hidden_no_area", unique_id="hidden-no-area-id", platform="test", device_id=device_no_area.id, hidden_by=ent_reg.RegistryEntryHider.USER, ) entity_diff_area = ent_reg.RegistryEntry( entity_id="light.diff_area", unique_id="diff-area-id", platform="test", device_id=device_diff_area.id, ) entity_in_area_a = ent_reg.RegistryEntry( entity_id="light.in_area_a", unique_id="in-area-a-id", platform="test", device_id=device_area_a.id, area_id="area-a", ) entity_in_area_b = ent_reg.RegistryEntry( entity_id="light.in_area_b", unique_id="in-area-b-id", platform="test", device_id=device_area_a.id, area_id="area-b", ) mock_registry( hass, { entity_in_own_area.entity_id: entity_in_own_area, config_entity_in_own_area.entity_id: config_entity_in_own_area, hidden_entity_in_own_area.entity_id: hidden_entity_in_own_area, entity_in_area.entity_id: entity_in_area, config_entity_in_area.entity_id: config_entity_in_area, hidden_entity_in_area.entity_id: hidden_entity_in_area, entity_in_other_area.entity_id: entity_in_other_area, entity_assigned_to_area.entity_id: entity_assigned_to_area, entity_no_area.entity_id: entity_no_area, config_entity_no_area.entity_id: config_entity_no_area, hidden_entity_no_area.entity_id: hidden_entity_no_area, entity_diff_area.entity_id: entity_diff_area, entity_in_area_a.entity_id: entity_in_area_a, entity_in_area_b.entity_id: entity_in_area_b, }, )
def area_mock(hass): """Mock including area info.""" hass.states.async_set("light.Bowl", STATE_ON) hass.states.async_set("light.Ceiling", STATE_OFF) hass.states.async_set("light.Kitchen", STATE_OFF) device_in_area = dev_reg.DeviceEntry(area_id="test-area") device_no_area = dev_reg.DeviceEntry(id="device-no-area-id") device_diff_area = dev_reg.DeviceEntry(area_id="diff-area") device_area_a = dev_reg.DeviceEntry(id="device-area-a-id", area_id="area-a") mock_device_registry( hass, { device_in_area.id: device_in_area, device_no_area.id: device_no_area, device_diff_area.id: device_diff_area, device_area_a.id: device_area_a, }, ) entity_in_own_area = ent_reg.RegistryEntry( entity_id="light.in_own_area", unique_id="in-own-area-id", platform="test", area_id="own-area", ) entity_in_area = ent_reg.RegistryEntry( entity_id="light.in_area", unique_id="in-area-id", platform="test", device_id=device_in_area.id, ) entity_in_other_area = ent_reg.RegistryEntry( entity_id="light.in_other_area", unique_id="in-area-a-id", platform="test", device_id=device_in_area.id, area_id="other-area", ) entity_assigned_to_area = ent_reg.RegistryEntry( entity_id="light.assigned_to_area", unique_id="assigned-area-id", platform="test", device_id=device_in_area.id, area_id="test-area", ) entity_no_area = ent_reg.RegistryEntry( entity_id="light.no_area", unique_id="no-area-id", platform="test", device_id=device_no_area.id, ) entity_diff_area = ent_reg.RegistryEntry( entity_id="light.diff_area", unique_id="diff-area-id", platform="test", device_id=device_diff_area.id, ) entity_in_area_a = ent_reg.RegistryEntry( entity_id="light.in_area_a", unique_id="in-area-a-id", platform="test", device_id=device_area_a.id, area_id="area-a", ) entity_in_area_b = ent_reg.RegistryEntry( entity_id="light.in_area_b", unique_id="in-area-b-id", platform="test", device_id=device_area_a.id, area_id="area-b", ) mock_registry( hass, { entity_in_own_area.entity_id: entity_in_own_area, entity_in_area.entity_id: entity_in_area, entity_in_other_area.entity_id: entity_in_other_area, entity_assigned_to_area.entity_id: entity_assigned_to_area, entity_no_area.entity_id: entity_no_area, entity_diff_area.entity_id: entity_diff_area, entity_in_area_a.entity_id: entity_in_area_a, entity_in_area_b.entity_id: entity_in_area_b, }, )
def zwave_migration_data_fixture(hass): """Return mock zwave migration data.""" zwave_source_node_device = dr.DeviceEntry( id=ZWAVE_SOURCE_NODE_DEVICE_ID, name_by_user=ZWAVE_SOURCE_NODE_DEVICE_NAME, area_id=ZWAVE_SOURCE_NODE_DEVICE_AREA, ) zwave_source_node_entry = er.RegistryEntry( entity_id=ZWAVE_SOURCE_ENTITY, unique_id=ZWAVE_SOURCE_NODE_UNIQUE_ID, platform="zwave", name="Z-Wave Source Node", ) zwave_battery_device = dr.DeviceEntry( id=ZWAVE_BATTERY_DEVICE_ID, name_by_user=ZWAVE_BATTERY_DEVICE_NAME, area_id=ZWAVE_BATTERY_DEVICE_AREA, ) zwave_battery_entry = er.RegistryEntry( entity_id=ZWAVE_BATTERY_ENTITY, unique_id=ZWAVE_BATTERY_UNIQUE_ID, platform="zwave", name=ZWAVE_BATTERY_NAME, icon=ZWAVE_BATTERY_ICON, ) zwave_power_device = dr.DeviceEntry( id=ZWAVE_POWER_DEVICE_ID, name_by_user=ZWAVE_POWER_DEVICE_NAME, area_id=ZWAVE_POWER_DEVICE_AREA, ) zwave_power_entry = er.RegistryEntry( entity_id=ZWAVE_POWER_ENTITY, unique_id=ZWAVE_POWER_UNIQUE_ID, platform="zwave", name=ZWAVE_POWER_NAME, icon=ZWAVE_POWER_ICON, ) zwave_migration_data = { ZWAVE_SOURCE_NODE_UNIQUE_ID: { "node_id": 10, "node_instance": 1, "device_id": zwave_source_node_device.id, "command_class": 113, "command_class_label": "SourceNodeId", "value_index": 2, "unique_id": ZWAVE_SOURCE_NODE_UNIQUE_ID, "entity_entry": zwave_source_node_entry, }, ZWAVE_BATTERY_UNIQUE_ID: { "node_id": 36, "node_instance": 1, "device_id": zwave_battery_device.id, "command_class": 128, "command_class_label": "Battery Level", "value_index": 0, "unique_id": ZWAVE_BATTERY_UNIQUE_ID, "entity_entry": zwave_battery_entry, }, ZWAVE_POWER_UNIQUE_ID: { "node_id": 32, "node_instance": 1, "device_id": zwave_power_device.id, "command_class": 50, "command_class_label": "Power", "value_index": 8, "unique_id": ZWAVE_POWER_UNIQUE_ID, "entity_entry": zwave_power_entry, }, } mock_device_registry( hass, { zwave_source_node_device.id: zwave_source_node_device, zwave_battery_device.id: zwave_battery_device, zwave_power_device.id: zwave_power_device, }, ) mock_registry( hass, { ZWAVE_SOURCE_ENTITY: zwave_source_node_entry, ZWAVE_BATTERY_ENTITY: zwave_battery_entry, ZWAVE_POWER_ENTITY: zwave_power_entry, }, ) return zwave_migration_data