Use the ESPHome object_id to suggest the entity id (#95852)

This commit is contained in:
J. Nick Koston 2023-07-10 01:02:34 -10:00 committed by GitHub
parent 87f284c7e9
commit 7dc03ef301
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 232 additions and 196 deletions

View File

@ -23,6 +23,7 @@ from homeassistant.const import (
EntityCategory,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import entity_platform
import homeassistant.helpers.config_validation as cv
import homeassistant.helpers.device_registry as dr
from homeassistant.helpers.dispatcher import (
@ -60,6 +61,7 @@ async def platform_async_setup_entry(
entry_data: RuntimeEntryData = DomainData.get(hass).get_entry_data(entry)
entry_data.info[info_type] = {}
entry_data.state.setdefault(state_type, {})
platform = entity_platform.async_get_current_platform()
@callback
def async_list_entities(infos: list[EntityInfo]) -> None:
@ -71,7 +73,7 @@ async def platform_async_setup_entry(
for info in infos:
if not current_infos.pop(info.key, None):
# Create new entity
entity = entity_type(entry_data, info, state_type)
entity = entity_type(entry_data, platform.domain, info, state_type)
add_entities.append(entity)
new_infos[info.key] = info
@ -145,10 +147,12 @@ class EsphomeEntity(Entity, Generic[_InfoT, _StateT]):
def __init__(
self,
entry_data: RuntimeEntryData,
domain: str,
entity_info: EntityInfo,
state_type: type[_StateT],
) -> None:
"""Initialize."""
self._entry_data = entry_data
self._on_entry_data_changed()
self._key = entity_info.key
@ -157,6 +161,9 @@ class EsphomeEntity(Entity, Generic[_InfoT, _StateT]):
assert entry_data.device_info is not None
device_info = entry_data.device_info
self._device_info = device_info
if object_id := entity_info.object_id:
# Use the object_id to suggest the entity_id
self.entity_id = f"{domain}.{device_info.name}_{object_id}"
self._attr_has_entity_name = bool(device_info.friendly_name)
self._attr_device_info = DeviceInfo(
connections={(dr.CONNECTION_NETWORK_MAC, device_info.mac_address)}

View File

@ -61,7 +61,7 @@ async def test_generic_alarm_control_panel_requires_code(
user_service=user_service,
states=states,
)
state = hass.states.get("alarm_control_panel.test_my_alarm_control_panel")
state = hass.states.get("alarm_control_panel.test_myalarm_control_panel")
assert state is not None
assert state.state == STATE_ALARM_ARMED_AWAY
@ -69,7 +69,7 @@ async def test_generic_alarm_control_panel_requires_code(
ALARM_CONTROL_PANEL_DOMAIN,
SERVICE_ALARM_ARM_AWAY,
{
ATTR_ENTITY_ID: "alarm_control_panel.test_my_alarm_control_panel",
ATTR_ENTITY_ID: "alarm_control_panel.test_myalarm_control_panel",
ATTR_CODE: 1234,
},
blocking=True,
@ -83,7 +83,7 @@ async def test_generic_alarm_control_panel_requires_code(
ALARM_CONTROL_PANEL_DOMAIN,
SERVICE_ALARM_ARM_CUSTOM_BYPASS,
{
ATTR_ENTITY_ID: "alarm_control_panel.test_my_alarm_control_panel",
ATTR_ENTITY_ID: "alarm_control_panel.test_myalarm_control_panel",
ATTR_CODE: 1234,
},
blocking=True,
@ -97,7 +97,7 @@ async def test_generic_alarm_control_panel_requires_code(
ALARM_CONTROL_PANEL_DOMAIN,
SERVICE_ALARM_ARM_HOME,
{
ATTR_ENTITY_ID: "alarm_control_panel.test_my_alarm_control_panel",
ATTR_ENTITY_ID: "alarm_control_panel.test_myalarm_control_panel",
ATTR_CODE: 1234,
},
blocking=True,
@ -111,7 +111,7 @@ async def test_generic_alarm_control_panel_requires_code(
ALARM_CONTROL_PANEL_DOMAIN,
SERVICE_ALARM_ARM_NIGHT,
{
ATTR_ENTITY_ID: "alarm_control_panel.test_my_alarm_control_panel",
ATTR_ENTITY_ID: "alarm_control_panel.test_myalarm_control_panel",
ATTR_CODE: 1234,
},
blocking=True,
@ -125,7 +125,7 @@ async def test_generic_alarm_control_panel_requires_code(
ALARM_CONTROL_PANEL_DOMAIN,
SERVICE_ALARM_ARM_VACATION,
{
ATTR_ENTITY_ID: "alarm_control_panel.test_my_alarm_control_panel",
ATTR_ENTITY_ID: "alarm_control_panel.test_myalarm_control_panel",
ATTR_CODE: 1234,
},
blocking=True,
@ -139,7 +139,7 @@ async def test_generic_alarm_control_panel_requires_code(
ALARM_CONTROL_PANEL_DOMAIN,
SERVICE_ALARM_TRIGGER,
{
ATTR_ENTITY_ID: "alarm_control_panel.test_my_alarm_control_panel",
ATTR_ENTITY_ID: "alarm_control_panel.test_myalarm_control_panel",
ATTR_CODE: 1234,
},
blocking=True,
@ -153,7 +153,7 @@ async def test_generic_alarm_control_panel_requires_code(
ALARM_CONTROL_PANEL_DOMAIN,
SERVICE_ALARM_DISARM,
{
ATTR_ENTITY_ID: "alarm_control_panel.test_my_alarm_control_panel",
ATTR_ENTITY_ID: "alarm_control_panel.test_myalarm_control_panel",
ATTR_CODE: 1234,
},
blocking=True,
@ -196,14 +196,14 @@ async def test_generic_alarm_control_panel_no_code(
user_service=user_service,
states=states,
)
state = hass.states.get("alarm_control_panel.test_my_alarm_control_panel")
state = hass.states.get("alarm_control_panel.test_myalarm_control_panel")
assert state is not None
assert state.state == STATE_ALARM_ARMED_AWAY
await hass.services.async_call(
ALARM_CONTROL_PANEL_DOMAIN,
SERVICE_ALARM_DISARM,
{ATTR_ENTITY_ID: "alarm_control_panel.test_my_alarm_control_panel"},
{ATTR_ENTITY_ID: "alarm_control_panel.test_myalarm_control_panel"},
blocking=True,
)
mock_client.alarm_control_panel_command.assert_has_calls(
@ -242,6 +242,6 @@ async def test_generic_alarm_control_panel_missing_state(
user_service=user_service,
states=states,
)
state = hass.states.get("alarm_control_panel.test_my_alarm_control_panel")
state = hass.states.get("alarm_control_panel.test_myalarm_control_panel")
assert state is not None
assert state.state == STATE_UNKNOWN

View File

@ -73,7 +73,7 @@ async def test_binary_sensor_generic_entity(
user_service=user_service,
states=states,
)
state = hass.states.get("binary_sensor.test_my_binary_sensor")
state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None
assert state.state == hass_state
@ -104,7 +104,7 @@ async def test_status_binary_sensor(
user_service=user_service,
states=states,
)
state = hass.states.get("binary_sensor.test_my_binary_sensor")
state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None
assert state.state == STATE_ON
@ -134,7 +134,7 @@ async def test_binary_sensor_missing_state(
user_service=user_service,
states=states,
)
state = hass.states.get("binary_sensor.test_my_binary_sensor")
state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None
assert state.state == STATE_UNKNOWN
@ -164,12 +164,12 @@ async def test_binary_sensor_has_state_false(
user_service=user_service,
states=states,
)
state = hass.states.get("binary_sensor.test_my_binary_sensor")
state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None
assert state.state == STATE_UNKNOWN
mock_device.set_state(BinarySensorState(key=1, state=True, missing_state=False))
await hass.async_block_till_done()
state = hass.states.get("binary_sensor.test_my_binary_sensor")
state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None
assert state.state == STATE_ON

View File

@ -33,22 +33,22 @@ async def test_button_generic_entity(
user_service=user_service,
states=states,
)
state = hass.states.get("button.test_my_button")
state = hass.states.get("button.test_mybutton")
assert state is not None
assert state.state == STATE_UNKNOWN
await hass.services.async_call(
BUTTON_DOMAIN,
SERVICE_PRESS,
{ATTR_ENTITY_ID: "button.test_my_button"},
{ATTR_ENTITY_ID: "button.test_mybutton"},
blocking=True,
)
mock_client.button_command.assert_has_calls([call(1)])
state = hass.states.get("button.test_my_button")
state = hass.states.get("button.test_mybutton")
assert state is not None
assert state.state != STATE_UNKNOWN
await mock_device.mock_disconnect(False)
state = hass.states.get("button.test_my_button")
state = hass.states.get("button.test_mybutton")
assert state is not None
assert state.state == STATE_UNAVAILABLE

View File

@ -54,7 +54,7 @@ async def test_camera_single_image(
user_service=user_service,
states=states,
)
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_IDLE
@ -64,9 +64,9 @@ async def test_camera_single_image(
mock_client.request_single_image = _mock_camera_image
client = await hass_client()
resp = await client.get("/api/camera_proxy/camera.test_my_camera")
resp = await client.get("/api/camera_proxy/camera.test_mycamera")
await hass.async_block_till_done()
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_IDLE
@ -102,15 +102,15 @@ async def test_camera_single_image_unavailable_before_requested(
user_service=user_service,
states=states,
)
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_IDLE
await mock_device.mock_disconnect(False)
client = await hass_client()
resp = await client.get("/api/camera_proxy/camera.test_my_camera")
resp = await client.get("/api/camera_proxy/camera.test_mycamera")
await hass.async_block_till_done()
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_UNAVAILABLE
@ -143,7 +143,7 @@ async def test_camera_single_image_unavailable_during_request(
user_service=user_service,
states=states,
)
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_IDLE
@ -153,9 +153,9 @@ async def test_camera_single_image_unavailable_during_request(
mock_client.request_single_image = _mock_camera_image
client = await hass_client()
resp = await client.get("/api/camera_proxy/camera.test_my_camera")
resp = await client.get("/api/camera_proxy/camera.test_mycamera")
await hass.async_block_till_done()
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_UNAVAILABLE
@ -188,7 +188,7 @@ async def test_camera_stream(
user_service=user_service,
states=states,
)
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_IDLE
remaining_responses = 3
@ -204,9 +204,9 @@ async def test_camera_stream(
mock_client.request_single_image = _mock_camera_image
client = await hass_client()
resp = await client.get("/api/camera_proxy_stream/camera.test_my_camera")
resp = await client.get("/api/camera_proxy_stream/camera.test_mycamera")
await hass.async_block_till_done()
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_IDLE
@ -248,16 +248,16 @@ async def test_camera_stream_unavailable(
user_service=user_service,
states=states,
)
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_IDLE
await mock_device.mock_disconnect(False)
client = await hass_client()
await client.get("/api/camera_proxy_stream/camera.test_my_camera")
await client.get("/api/camera_proxy_stream/camera.test_mycamera")
await hass.async_block_till_done()
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_UNAVAILABLE
@ -288,7 +288,7 @@ async def test_camera_stream_with_disconnection(
user_service=user_service,
states=states,
)
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_IDLE
remaining_responses = 3
@ -306,8 +306,8 @@ async def test_camera_stream_with_disconnection(
mock_client.request_single_image = _mock_camera_image
client = await hass_client()
await client.get("/api/camera_proxy_stream/camera.test_my_camera")
await client.get("/api/camera_proxy_stream/camera.test_mycamera")
await hass.async_block_till_done()
state = hass.states.get("camera.test_my_camera")
state = hass.states.get("camera.test_mycamera")
assert state is not None
assert state.state == STATE_UNAVAILABLE

View File

@ -71,14 +71,14 @@ async def test_climate_entity(
user_service=user_service,
states=states,
)
state = hass.states.get("climate.test_my_climate")
state = hass.states.get("climate.test_myclimate")
assert state is not None
assert state.state == HVACMode.COOL
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
{ATTR_ENTITY_ID: "climate.test_my_climate", ATTR_TEMPERATURE: 25},
{ATTR_ENTITY_ID: "climate.test_myclimate", ATTR_TEMPERATURE: 25},
blocking=True,
)
mock_client.climate_command.assert_has_calls([call(key=1, target_temperature=25.0)])
@ -123,14 +123,14 @@ async def test_climate_entity_with_step_and_two_point(
user_service=user_service,
states=states,
)
state = hass.states.get("climate.test_my_climate")
state = hass.states.get("climate.test_myclimate")
assert state is not None
assert state.state == HVACMode.COOL
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
{ATTR_ENTITY_ID: "climate.test_my_climate", ATTR_TEMPERATURE: 25},
{ATTR_ENTITY_ID: "climate.test_myclimate", ATTR_TEMPERATURE: 25},
blocking=True,
)
mock_client.climate_command.assert_has_calls([call(key=1, target_temperature=25.0)])
@ -140,7 +140,7 @@ async def test_climate_entity_with_step_and_two_point(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
{
ATTR_ENTITY_ID: "climate.test_my_climate",
ATTR_ENTITY_ID: "climate.test_myclimate",
ATTR_HVAC_MODE: HVACMode.AUTO,
ATTR_TARGET_TEMP_LOW: 20,
ATTR_TARGET_TEMP_HIGH: 30,
@ -202,14 +202,14 @@ async def test_climate_entity_with_step_and_target_temp(
user_service=user_service,
states=states,
)
state = hass.states.get("climate.test_my_climate")
state = hass.states.get("climate.test_myclimate")
assert state is not None
assert state.state == HVACMode.COOL
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
{ATTR_ENTITY_ID: "climate.test_my_climate", ATTR_TEMPERATURE: 25},
{ATTR_ENTITY_ID: "climate.test_myclimate", ATTR_TEMPERATURE: 25},
blocking=True,
)
mock_client.climate_command.assert_has_calls([call(key=1, target_temperature=25.0)])
@ -219,7 +219,7 @@ async def test_climate_entity_with_step_and_target_temp(
CLIMATE_DOMAIN,
SERVICE_SET_TEMPERATURE,
{
ATTR_ENTITY_ID: "climate.test_my_climate",
ATTR_ENTITY_ID: "climate.test_myclimate",
ATTR_HVAC_MODE: HVACMode.AUTO,
ATTR_TARGET_TEMP_LOW: 20,
ATTR_TARGET_TEMP_HIGH: 30,
@ -242,7 +242,7 @@ async def test_climate_entity_with_step_and_target_temp(
CLIMATE_DOMAIN,
SERVICE_SET_HVAC_MODE,
{
ATTR_ENTITY_ID: "climate.test_my_climate",
ATTR_ENTITY_ID: "climate.test_myclimate",
ATTR_HVAC_MODE: HVACMode.HEAT,
},
blocking=True,
@ -260,7 +260,7 @@ async def test_climate_entity_with_step_and_target_temp(
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_PRESET_MODE,
{ATTR_ENTITY_ID: "climate.test_my_climate", ATTR_PRESET_MODE: "away"},
{ATTR_ENTITY_ID: "climate.test_myclimate", ATTR_PRESET_MODE: "away"},
blocking=True,
)
mock_client.climate_command.assert_has_calls(
@ -276,7 +276,7 @@ async def test_climate_entity_with_step_and_target_temp(
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_PRESET_MODE,
{ATTR_ENTITY_ID: "climate.test_my_climate", ATTR_PRESET_MODE: "preset1"},
{ATTR_ENTITY_ID: "climate.test_myclimate", ATTR_PRESET_MODE: "preset1"},
blocking=True,
)
mock_client.climate_command.assert_has_calls([call(key=1, custom_preset="preset1")])
@ -285,7 +285,7 @@ async def test_climate_entity_with_step_and_target_temp(
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_FAN_MODE,
{ATTR_ENTITY_ID: "climate.test_my_climate", ATTR_FAN_MODE: FAN_HIGH},
{ATTR_ENTITY_ID: "climate.test_myclimate", ATTR_FAN_MODE: FAN_HIGH},
blocking=True,
)
mock_client.climate_command.assert_has_calls(
@ -296,7 +296,7 @@ async def test_climate_entity_with_step_and_target_temp(
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_FAN_MODE,
{ATTR_ENTITY_ID: "climate.test_my_climate", ATTR_FAN_MODE: "fan2"},
{ATTR_ENTITY_ID: "climate.test_myclimate", ATTR_FAN_MODE: "fan2"},
blocking=True,
)
mock_client.climate_command.assert_has_calls([call(key=1, custom_fan_mode="fan2")])
@ -305,7 +305,7 @@ async def test_climate_entity_with_step_and_target_temp(
await hass.services.async_call(
CLIMATE_DOMAIN,
SERVICE_SET_SWING_MODE,
{ATTR_ENTITY_ID: "climate.test_my_climate", ATTR_SWING_MODE: SWING_BOTH},
{ATTR_ENTITY_ID: "climate.test_myclimate", ATTR_SWING_MODE: SWING_BOTH},
blocking=True,
)
mock_client.climate_command.assert_has_calls(

View File

@ -72,7 +72,7 @@ async def test_cover_entity(
user_service=user_service,
states=states,
)
state = hass.states.get("cover.test_my_cover")
state = hass.states.get("cover.test_mycover")
assert state is not None
assert state.state == STATE_OPENING
assert state.attributes[ATTR_CURRENT_POSITION] == 50
@ -81,7 +81,7 @@ async def test_cover_entity(
await hass.services.async_call(
COVER_DOMAIN,
SERVICE_CLOSE_COVER,
{ATTR_ENTITY_ID: "cover.test_my_cover"},
{ATTR_ENTITY_ID: "cover.test_mycover"},
blocking=True,
)
mock_client.cover_command.assert_has_calls([call(key=1, position=0.0)])
@ -90,7 +90,7 @@ async def test_cover_entity(
await hass.services.async_call(
COVER_DOMAIN,
SERVICE_OPEN_COVER,
{ATTR_ENTITY_ID: "cover.test_my_cover"},
{ATTR_ENTITY_ID: "cover.test_mycover"},
blocking=True,
)
mock_client.cover_command.assert_has_calls([call(key=1, position=1.0)])
@ -99,7 +99,7 @@ async def test_cover_entity(
await hass.services.async_call(
COVER_DOMAIN,
SERVICE_SET_COVER_POSITION,
{ATTR_ENTITY_ID: "cover.test_my_cover", ATTR_POSITION: 50},
{ATTR_ENTITY_ID: "cover.test_mycover", ATTR_POSITION: 50},
blocking=True,
)
mock_client.cover_command.assert_has_calls([call(key=1, position=0.5)])
@ -108,7 +108,7 @@ async def test_cover_entity(
await hass.services.async_call(
COVER_DOMAIN,
SERVICE_STOP_COVER,
{ATTR_ENTITY_ID: "cover.test_my_cover"},
{ATTR_ENTITY_ID: "cover.test_mycover"},
blocking=True,
)
mock_client.cover_command.assert_has_calls([call(key=1, stop=True)])
@ -117,7 +117,7 @@ async def test_cover_entity(
await hass.services.async_call(
COVER_DOMAIN,
SERVICE_OPEN_COVER_TILT,
{ATTR_ENTITY_ID: "cover.test_my_cover"},
{ATTR_ENTITY_ID: "cover.test_mycover"},
blocking=True,
)
mock_client.cover_command.assert_has_calls([call(key=1, tilt=1.0)])
@ -126,7 +126,7 @@ async def test_cover_entity(
await hass.services.async_call(
COVER_DOMAIN,
SERVICE_CLOSE_COVER_TILT,
{ATTR_ENTITY_ID: "cover.test_my_cover"},
{ATTR_ENTITY_ID: "cover.test_mycover"},
blocking=True,
)
mock_client.cover_command.assert_has_calls([call(key=1, tilt=0.0)])
@ -135,7 +135,7 @@ async def test_cover_entity(
await hass.services.async_call(
COVER_DOMAIN,
SERVICE_SET_COVER_TILT_POSITION,
{ATTR_ENTITY_ID: "cover.test_my_cover", ATTR_TILT_POSITION: 50},
{ATTR_ENTITY_ID: "cover.test_mycover", ATTR_TILT_POSITION: 50},
blocking=True,
)
mock_client.cover_command.assert_has_calls([call(key=1, tilt=0.5)])
@ -145,7 +145,7 @@ async def test_cover_entity(
CoverState(key=1, position=0.0, current_operation=CoverOperation.IDLE)
)
await hass.async_block_till_done()
state = hass.states.get("cover.test_my_cover")
state = hass.states.get("cover.test_mycover")
assert state is not None
assert state.state == STATE_CLOSED
@ -153,7 +153,7 @@ async def test_cover_entity(
CoverState(key=1, position=0.5, current_operation=CoverOperation.IS_CLOSING)
)
await hass.async_block_till_done()
state = hass.states.get("cover.test_my_cover")
state = hass.states.get("cover.test_mycover")
assert state is not None
assert state.state == STATE_CLOSING
@ -161,7 +161,7 @@ async def test_cover_entity(
CoverState(key=1, position=1.0, current_operation=CoverOperation.IDLE)
)
await hass.async_block_till_done()
state = hass.states.get("cover.test_my_cover")
state = hass.states.get("cover.test_mycover")
assert state is not None
assert state.state == STATE_OPEN
@ -201,7 +201,7 @@ async def test_cover_entity_without_position(
user_service=user_service,
states=states,
)
state = hass.states.get("cover.test_my_cover")
state = hass.states.get("cover.test_mycover")
assert state is not None
assert state.state == STATE_OPENING
assert ATTR_CURRENT_TILT_POSITION not in state.attributes

View File

@ -55,10 +55,10 @@ async def test_entities_removed(
entry = mock_device.entry
entry_id = entry.entry_id
storage_key = f"esphome.{entry_id}"
state = hass.states.get("binary_sensor.test_my_binary_sensor")
state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None
assert state.state == STATE_ON
state = hass.states.get("binary_sensor.test_my_binary_sensor_to_be_removed")
state = hass.states.get("binary_sensor.test_mybinary_sensor_to_be_removed")
assert state is not None
assert state.state == STATE_ON
@ -67,10 +67,10 @@ async def test_entities_removed(
assert len(hass_storage[storage_key]["data"]["binary_sensor"]) == 2
state = hass.states.get("binary_sensor.test_my_binary_sensor")
state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None
assert state.attributes[ATTR_RESTORED] is True
state = hass.states.get("binary_sensor.test_my_binary_sensor_to_be_removed")
state = hass.states.get("binary_sensor.test_mybinary_sensor_to_be_removed")
assert state is not None
assert state.attributes[ATTR_RESTORED] is True
@ -93,11 +93,40 @@ async def test_entities_removed(
entry=entry,
)
assert mock_device.entry.entry_id == entry_id
state = hass.states.get("binary_sensor.test_my_binary_sensor")
state = hass.states.get("binary_sensor.test_mybinary_sensor")
assert state is not None
assert state.state == STATE_ON
state = hass.states.get("binary_sensor.test_my_binary_sensor_to_be_removed")
state = hass.states.get("binary_sensor.test_mybinary_sensor_to_be_removed")
assert state is None
await hass.config_entries.async_unload(entry.entry_id)
await hass.async_block_till_done()
assert len(hass_storage[storage_key]["data"]["binary_sensor"]) == 1
async def test_entity_info_object_ids(
hass: HomeAssistant,
mock_client: APIClient,
mock_esphome_device: Callable[
[APIClient, list[EntityInfo], list[UserService], list[EntityState]],
Awaitable[MockESPHomeDevice],
],
) -> None:
"""Test how object ids affect entity id."""
entity_info = [
BinarySensorInfo(
object_id="object_id_is_used",
key=1,
name="my binary_sensor",
unique_id="my_binary_sensor",
)
]
states = []
user_service = []
await mock_esphome_device(
mock_client=mock_client,
entity_info=entity_info,
user_service=user_service,
states=states,
)
state = hass.states.get("binary_sensor.test_object_id_is_used")
assert state is not None

View File

@ -61,14 +61,14 @@ async def test_fan_entity_with_all_features_old_api(
user_service=user_service,
states=states,
)
state = hass.states.get("fan.test_my_fan")
state = hass.states.get("fan.test_myfan")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_PERCENTAGE: 20},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_PERCENTAGE: 20},
blocking=True,
)
mock_client.fan_command.assert_has_calls(
@ -79,7 +79,7 @@ async def test_fan_entity_with_all_features_old_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_PERCENTAGE: 50},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_PERCENTAGE: 50},
blocking=True,
)
mock_client.fan_command.assert_has_calls(
@ -90,7 +90,7 @@ async def test_fan_entity_with_all_features_old_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_DECREASE_SPEED,
{ATTR_ENTITY_ID: "fan.test_my_fan"},
{ATTR_ENTITY_ID: "fan.test_myfan"},
blocking=True,
)
mock_client.fan_command.assert_has_calls(
@ -101,7 +101,7 @@ async def test_fan_entity_with_all_features_old_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_INCREASE_SPEED,
{ATTR_ENTITY_ID: "fan.test_my_fan"},
{ATTR_ENTITY_ID: "fan.test_myfan"},
blocking=True,
)
mock_client.fan_command.assert_has_calls(
@ -112,7 +112,7 @@ async def test_fan_entity_with_all_features_old_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: "fan.test_my_fan"},
{ATTR_ENTITY_ID: "fan.test_myfan"},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, state=False)])
@ -121,7 +121,7 @@ async def test_fan_entity_with_all_features_old_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_SET_PERCENTAGE,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_PERCENTAGE: 100},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_PERCENTAGE: 100},
blocking=True,
)
mock_client.fan_command.assert_has_calls(
@ -163,14 +163,14 @@ async def test_fan_entity_with_all_features_new_api(
user_service=user_service,
states=states,
)
state = hass.states.get("fan.test_my_fan")
state = hass.states.get("fan.test_myfan")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_PERCENTAGE: 20},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_PERCENTAGE: 20},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, speed_level=1, state=True)])
@ -179,7 +179,7 @@ async def test_fan_entity_with_all_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_PERCENTAGE: 50},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_PERCENTAGE: 50},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, speed_level=2, state=True)])
@ -188,7 +188,7 @@ async def test_fan_entity_with_all_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_DECREASE_SPEED,
{ATTR_ENTITY_ID: "fan.test_my_fan"},
{ATTR_ENTITY_ID: "fan.test_myfan"},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, speed_level=2, state=True)])
@ -197,7 +197,7 @@ async def test_fan_entity_with_all_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_INCREASE_SPEED,
{ATTR_ENTITY_ID: "fan.test_my_fan"},
{ATTR_ENTITY_ID: "fan.test_myfan"},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, speed_level=4, state=True)])
@ -206,7 +206,7 @@ async def test_fan_entity_with_all_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: "fan.test_my_fan"},
{ATTR_ENTITY_ID: "fan.test_myfan"},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, state=False)])
@ -215,7 +215,7 @@ async def test_fan_entity_with_all_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_SET_PERCENTAGE,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_PERCENTAGE: 100},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_PERCENTAGE: 100},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, speed_level=4, state=True)])
@ -224,7 +224,7 @@ async def test_fan_entity_with_all_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_SET_PERCENTAGE,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_PERCENTAGE: 0},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_PERCENTAGE: 0},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, state=False)])
@ -233,7 +233,7 @@ async def test_fan_entity_with_all_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_OSCILLATE,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_OSCILLATING: True},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_OSCILLATING: True},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, oscillating=True)])
@ -242,7 +242,7 @@ async def test_fan_entity_with_all_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_OSCILLATE,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_OSCILLATING: False},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_OSCILLATING: False},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, oscillating=False)])
@ -251,7 +251,7 @@ async def test_fan_entity_with_all_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_SET_DIRECTION,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_DIRECTION: "forward"},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_DIRECTION: "forward"},
blocking=True,
)
mock_client.fan_command.assert_has_calls(
@ -262,7 +262,7 @@ async def test_fan_entity_with_all_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_SET_DIRECTION,
{ATTR_ENTITY_ID: "fan.test_my_fan", ATTR_DIRECTION: "reverse"},
{ATTR_ENTITY_ID: "fan.test_myfan", ATTR_DIRECTION: "reverse"},
blocking=True,
)
mock_client.fan_command.assert_has_calls(
@ -295,14 +295,14 @@ async def test_fan_entity_with_no_features_new_api(
user_service=user_service,
states=states,
)
state = hass.states.get("fan.test_my_fan")
state = hass.states.get("fan.test_myfan")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "fan.test_my_fan"},
{ATTR_ENTITY_ID: "fan.test_myfan"},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, state=True)])
@ -311,7 +311,7 @@ async def test_fan_entity_with_no_features_new_api(
await hass.services.async_call(
FAN_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: "fan.test_my_fan"},
{ATTR_ENTITY_ID: "fan.test_myfan"},
blocking=True,
)
mock_client.fan_command.assert_has_calls([call(key=1, state=False)])

View File

@ -65,14 +65,14 @@ async def test_light_on_off(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -105,14 +105,14 @@ async def test_light_brightness(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -123,7 +123,7 @@ async def test_light_brightness(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_BRIGHTNESS: 127},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_BRIGHTNESS: 127},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -141,7 +141,7 @@ async def test_light_brightness(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_TRANSITION: 2},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_TRANSITION: 2},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -152,7 +152,7 @@ async def test_light_brightness(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_FLASH: FLASH_LONG},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_FLASH: FLASH_LONG},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -163,7 +163,7 @@ async def test_light_brightness(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_TRANSITION: 2},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_TRANSITION: 2},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -181,7 +181,7 @@ async def test_light_brightness(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_FLASH: FLASH_SHORT},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_FLASH: FLASH_SHORT},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -223,14 +223,14 @@ async def test_light_brightness_on_off(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -248,7 +248,7 @@ async def test_light_brightness_on_off(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_BRIGHTNESS: 127},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_BRIGHTNESS: 127},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -293,14 +293,14 @@ async def test_light_legacy_white_converted_to_brightness(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -343,14 +343,14 @@ async def test_light_brightness_on_off_with_unknown_color_mode(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -369,7 +369,7 @@ async def test_light_brightness_on_off_with_unknown_color_mode(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_BRIGHTNESS: 127},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_BRIGHTNESS: 127},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -414,14 +414,14 @@ async def test_light_on_and_brightness(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -464,14 +464,14 @@ async def test_rgb_color_temp_light(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -489,7 +489,7 @@ async def test_rgb_color_temp_light(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_BRIGHTNESS: 127},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_BRIGHTNESS: 127},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -508,7 +508,7 @@ async def test_rgb_color_temp_light(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_COLOR_TEMP_KELVIN: 2500},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_COLOR_TEMP_KELVIN: 2500},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -552,14 +552,14 @@ async def test_light_rgb(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -578,7 +578,7 @@ async def test_light_rgb(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_BRIGHTNESS: 127},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_BRIGHTNESS: 127},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -599,7 +599,7 @@ async def test_light_rgb(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{
ATTR_ENTITY_ID: "light.test_my_light",
ATTR_ENTITY_ID: "light.test_mylight",
ATTR_BRIGHTNESS: 127,
ATTR_HS_COLOR: (100, 100),
},
@ -624,7 +624,7 @@ async def test_light_rgb(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_RGB_COLOR: (255, 255, 255)},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_RGB_COLOR: (255, 255, 255)},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -684,7 +684,7 @@ async def test_light_rgbw(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
assert state.attributes[ATTR_SUPPORTED_COLOR_MODES] == [ColorMode.RGBW]
@ -693,7 +693,7 @@ async def test_light_rgbw(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -713,7 +713,7 @@ async def test_light_rgbw(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_BRIGHTNESS: 127},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_BRIGHTNESS: 127},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -735,7 +735,7 @@ async def test_light_rgbw(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{
ATTR_ENTITY_ID: "light.test_my_light",
ATTR_ENTITY_ID: "light.test_mylight",
ATTR_BRIGHTNESS: 127,
ATTR_HS_COLOR: (100, 100),
},
@ -762,7 +762,7 @@ async def test_light_rgbw(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_RGB_COLOR: (255, 255, 255)},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_RGB_COLOR: (255, 255, 255)},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -785,7 +785,7 @@ async def test_light_rgbw(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_RGBW_COLOR: (255, 255, 255, 255)},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_RGBW_COLOR: (255, 255, 255, 255)},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -855,7 +855,7 @@ async def test_light_rgbww_with_cold_warm_white_support(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
assert state.attributes[ATTR_SUPPORTED_COLOR_MODES] == [ColorMode.RGBWW]
@ -865,7 +865,7 @@ async def test_light_rgbww_with_cold_warm_white_support(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -887,7 +887,7 @@ async def test_light_rgbww_with_cold_warm_white_support(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_BRIGHTNESS: 127},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_BRIGHTNESS: 127},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -911,7 +911,7 @@ async def test_light_rgbww_with_cold_warm_white_support(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{
ATTR_ENTITY_ID: "light.test_my_light",
ATTR_ENTITY_ID: "light.test_mylight",
ATTR_BRIGHTNESS: 127,
ATTR_HS_COLOR: (100, 100),
},
@ -941,7 +941,7 @@ async def test_light_rgbww_with_cold_warm_white_support(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_RGB_COLOR: (255, 255, 255)},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_RGB_COLOR: (255, 255, 255)},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -967,7 +967,7 @@ async def test_light_rgbww_with_cold_warm_white_support(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_RGBW_COLOR: (255, 255, 255, 255)},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_RGBW_COLOR: (255, 255, 255, 255)},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -994,7 +994,7 @@ async def test_light_rgbww_with_cold_warm_white_support(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{
ATTR_ENTITY_ID: "light.test_my_light",
ATTR_ENTITY_ID: "light.test_mylight",
ATTR_RGBWW_COLOR: (255, 255, 255, 255, 255),
},
blocking=True,
@ -1022,7 +1022,7 @@ async def test_light_rgbww_with_cold_warm_white_support(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_COLOR_TEMP_KELVIN: 2500},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_COLOR_TEMP_KELVIN: 2500},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1092,7 +1092,7 @@ async def test_light_rgbww_without_cold_warm_white_support(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
assert state.attributes[ATTR_SUPPORTED_COLOR_MODES] == [ColorMode.RGBWW]
@ -1102,7 +1102,7 @@ async def test_light_rgbww_without_cold_warm_white_support(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1123,7 +1123,7 @@ async def test_light_rgbww_without_cold_warm_white_support(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_BRIGHTNESS: 127},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_BRIGHTNESS: 127},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1146,7 +1146,7 @@ async def test_light_rgbww_without_cold_warm_white_support(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{
ATTR_ENTITY_ID: "light.test_my_light",
ATTR_ENTITY_ID: "light.test_mylight",
ATTR_BRIGHTNESS: 127,
ATTR_HS_COLOR: (100, 100),
},
@ -1175,7 +1175,7 @@ async def test_light_rgbww_without_cold_warm_white_support(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_RGB_COLOR: (255, 255, 255)},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_RGB_COLOR: (255, 255, 255)},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1200,7 +1200,7 @@ async def test_light_rgbww_without_cold_warm_white_support(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_RGBW_COLOR: (255, 255, 255, 255)},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_RGBW_COLOR: (255, 255, 255, 255)},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1226,7 +1226,7 @@ async def test_light_rgbww_without_cold_warm_white_support(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{
ATTR_ENTITY_ID: "light.test_my_light",
ATTR_ENTITY_ID: "light.test_mylight",
ATTR_RGBWW_COLOR: (255, 255, 255, 255, 255),
},
blocking=True,
@ -1253,7 +1253,7 @@ async def test_light_rgbww_without_cold_warm_white_support(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_COLOR_TEMP_KELVIN: 2500},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_COLOR_TEMP_KELVIN: 2500},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1312,7 +1312,7 @@ async def test_light_color_temp(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
attributes = state.attributes
@ -1325,7 +1325,7 @@ async def test_light_color_temp(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1344,7 +1344,7 @@ async def test_light_color_temp(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls([call(key=1, state=False)])
@ -1387,7 +1387,7 @@ async def test_light_color_temp_no_mireds_set(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
attributes = state.attributes
@ -1400,7 +1400,7 @@ async def test_light_color_temp_no_mireds_set(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1419,7 +1419,7 @@ async def test_light_color_temp_no_mireds_set(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_COLOR_TEMP_KELVIN: 6000},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_COLOR_TEMP_KELVIN: 6000},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1439,7 +1439,7 @@ async def test_light_color_temp_no_mireds_set(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls([call(key=1, state=False)])
@ -1489,7 +1489,7 @@ async def test_light_color_temp_legacy(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
attributes = state.attributes
@ -1504,7 +1504,7 @@ async def test_light_color_temp_legacy(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1523,7 +1523,7 @@ async def test_light_color_temp_legacy(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls([call(key=1, state=False)])
@ -1575,7 +1575,7 @@ async def test_light_rgb_legacy(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
attributes = state.attributes
@ -1585,7 +1585,7 @@ async def test_light_rgb_legacy(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1601,7 +1601,7 @@ async def test_light_rgb_legacy(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: "light.test_my_light"},
{ATTR_ENTITY_ID: "light.test_mylight"},
blocking=True,
)
mock_client.light_command.assert_has_calls([call(key=1, state=False)])
@ -1610,7 +1610,7 @@ async def test_light_rgb_legacy(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_RGB_COLOR: (255, 255, 255)},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_RGB_COLOR: (255, 255, 255)},
blocking=True,
)
mock_client.light_command.assert_has_calls(
@ -1653,7 +1653,7 @@ async def test_light_effects(
user_service=user_service,
states=states,
)
state = hass.states.get("light.test_my_light")
state = hass.states.get("light.test_mylight")
assert state is not None
assert state.state == STATE_ON
assert state.attributes[ATTR_EFFECT_LIST] == ["effect1", "effect2"]
@ -1661,7 +1661,7 @@ async def test_light_effects(
await hass.services.async_call(
LIGHT_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "light.test_my_light", ATTR_EFFECT: "effect1"},
{ATTR_ENTITY_ID: "light.test_mylight", ATTR_EFFECT: "effect1"},
blocking=True,
)
mock_client.light_command.assert_has_calls(

View File

@ -40,14 +40,14 @@ async def test_lock_entity_no_open(
user_service=user_service,
states=states,
)
state = hass.states.get("lock.test_my_lock")
state = hass.states.get("lock.test_mylock")
assert state is not None
assert state.state == STATE_UNLOCKING
await hass.services.async_call(
LOCK_DOMAIN,
SERVICE_LOCK,
{ATTR_ENTITY_ID: "lock.test_my_lock"},
{ATTR_ENTITY_ID: "lock.test_mylock"},
blocking=True,
)
mock_client.lock_command.assert_has_calls([call(1, LockCommand.LOCK)])
@ -74,7 +74,7 @@ async def test_lock_entity_start_locked(
user_service=user_service,
states=states,
)
state = hass.states.get("lock.test_my_lock")
state = hass.states.get("lock.test_mylock")
assert state is not None
assert state.state == STATE_LOCKED
@ -101,14 +101,14 @@ async def test_lock_entity_supports_open(
user_service=user_service,
states=states,
)
state = hass.states.get("lock.test_my_lock")
state = hass.states.get("lock.test_mylock")
assert state is not None
assert state.state == STATE_LOCKING
await hass.services.async_call(
LOCK_DOMAIN,
SERVICE_LOCK,
{ATTR_ENTITY_ID: "lock.test_my_lock"},
{ATTR_ENTITY_ID: "lock.test_mylock"},
blocking=True,
)
mock_client.lock_command.assert_has_calls([call(1, LockCommand.LOCK)])
@ -117,7 +117,7 @@ async def test_lock_entity_supports_open(
await hass.services.async_call(
LOCK_DOMAIN,
SERVICE_UNLOCK,
{ATTR_ENTITY_ID: "lock.test_my_lock"},
{ATTR_ENTITY_ID: "lock.test_mylock"},
blocking=True,
)
mock_client.lock_command.assert_has_calls([call(1, LockCommand.UNLOCK, None)])
@ -126,7 +126,7 @@ async def test_lock_entity_supports_open(
await hass.services.async_call(
LOCK_DOMAIN,
SERVICE_OPEN,
{ATTR_ENTITY_ID: "lock.test_my_lock"},
{ATTR_ENTITY_ID: "lock.test_mylock"},
blocking=True,
)
mock_client.lock_command.assert_has_calls([call(1, LockCommand.OPEN)])

View File

@ -63,7 +63,7 @@ async def test_media_player_entity(
user_service=user_service,
states=states,
)
state = hass.states.get("media_player.test_my_media_player")
state = hass.states.get("media_player.test_mymedia_player")
assert state is not None
assert state.state == "paused"
@ -71,7 +71,7 @@ async def test_media_player_entity(
MEDIA_PLAYER_DOMAIN,
SERVICE_VOLUME_MUTE,
{
ATTR_ENTITY_ID: "media_player.test_my_media_player",
ATTR_ENTITY_ID: "media_player.test_mymedia_player",
ATTR_MEDIA_VOLUME_MUTED: True,
},
blocking=True,
@ -85,7 +85,7 @@ async def test_media_player_entity(
MEDIA_PLAYER_DOMAIN,
SERVICE_VOLUME_MUTE,
{
ATTR_ENTITY_ID: "media_player.test_my_media_player",
ATTR_ENTITY_ID: "media_player.test_mymedia_player",
ATTR_MEDIA_VOLUME_MUTED: True,
},
blocking=True,
@ -99,7 +99,7 @@ async def test_media_player_entity(
MEDIA_PLAYER_DOMAIN,
SERVICE_VOLUME_SET,
{
ATTR_ENTITY_ID: "media_player.test_my_media_player",
ATTR_ENTITY_ID: "media_player.test_mymedia_player",
ATTR_MEDIA_VOLUME_LEVEL: 0.5,
},
blocking=True,
@ -111,7 +111,7 @@ async def test_media_player_entity(
MEDIA_PLAYER_DOMAIN,
SERVICE_MEDIA_PAUSE,
{
ATTR_ENTITY_ID: "media_player.test_my_media_player",
ATTR_ENTITY_ID: "media_player.test_mymedia_player",
},
blocking=True,
)
@ -124,7 +124,7 @@ async def test_media_player_entity(
MEDIA_PLAYER_DOMAIN,
SERVICE_MEDIA_PLAY,
{
ATTR_ENTITY_ID: "media_player.test_my_media_player",
ATTR_ENTITY_ID: "media_player.test_mymedia_player",
},
blocking=True,
)
@ -137,7 +137,7 @@ async def test_media_player_entity(
MEDIA_PLAYER_DOMAIN,
SERVICE_MEDIA_STOP,
{
ATTR_ENTITY_ID: "media_player.test_my_media_player",
ATTR_ENTITY_ID: "media_player.test_mymedia_player",
},
blocking=True,
)
@ -206,7 +206,7 @@ async def test_media_player_entity_with_source(
user_service=user_service,
states=states,
)
state = hass.states.get("media_player.test_my_media_player")
state = hass.states.get("media_player.test_mymedia_player")
assert state is not None
assert state.state == "playing"
@ -215,7 +215,7 @@ async def test_media_player_entity_with_source(
MEDIA_PLAYER_DOMAIN,
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: "media_player.test_my_media_player",
ATTR_ENTITY_ID: "media_player.test_mymedia_player",
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: "media-source://local/xz",
},
@ -228,7 +228,7 @@ async def test_media_player_entity_with_source(
{
"id": 1,
"type": "media_player/browse_media",
"entity_id": "media_player.test_my_media_player",
"entity_id": "media_player.test_mymedia_player",
}
)
response = await client.receive_json()
@ -238,7 +238,7 @@ async def test_media_player_entity_with_source(
MEDIA_PLAYER_DOMAIN,
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: "media_player.test_my_media_player",
ATTR_ENTITY_ID: "media_player.test_mymedia_player",
ATTR_MEDIA_CONTENT_TYPE: MediaType.URL,
ATTR_MEDIA_CONTENT_ID: "media-source://tts?message=hello",
},

View File

@ -45,14 +45,14 @@ async def test_generic_number_entity(
user_service=user_service,
states=states,
)
state = hass.states.get("number.test_my_number")
state = hass.states.get("number.test_mynumber")
assert state is not None
assert state.state == "50"
await hass.services.async_call(
NUMBER_DOMAIN,
SERVICE_SET_VALUE,
{ATTR_ENTITY_ID: "number.test_my_number", ATTR_VALUE: 50},
{ATTR_ENTITY_ID: "number.test_mynumber", ATTR_VALUE: 50},
blocking=True,
)
mock_client.number_command.assert_has_calls([call(1, 50)])
@ -86,6 +86,6 @@ async def test_generic_number_nan(
user_service=user_service,
states=states,
)
state = hass.states.get("number.test_my_number")
state = hass.states.get("number.test_mynumber")
assert state is not None
assert state.state == STATE_UNKNOWN

View File

@ -60,14 +60,14 @@ async def test_select_generic_entity(
user_service=user_service,
states=states,
)
state = hass.states.get("select.test_my_select")
state = hass.states.get("select.test_myselect")
assert state is not None
assert state.state == "a"
await hass.services.async_call(
SELECT_DOMAIN,
SERVICE_SELECT_OPTION,
{ATTR_ENTITY_ID: "select.test_my_select", ATTR_OPTION: "b"},
{ATTR_ENTITY_ID: "select.test_myselect", ATTR_OPTION: "b"},
blocking=True,
)
mock_client.select_command.assert_has_calls([call(1, "b")])

View File

@ -41,7 +41,7 @@ async def test_generic_numeric_sensor(
user_service=user_service,
states=states,
)
state = hass.states.get("sensor.test_my_sensor")
state = hass.states.get("sensor.test_mysensor")
assert state is not None
assert state.state == "50"
@ -70,12 +70,12 @@ async def test_generic_numeric_sensor_with_entity_category_and_icon(
user_service=user_service,
states=states,
)
state = hass.states.get("sensor.test_my_sensor")
state = hass.states.get("sensor.test_mysensor")
assert state is not None
assert state.state == "50"
assert state.attributes[ATTR_ICON] == "mdi:leaf"
entity_reg = er.async_get(hass)
entry = entity_reg.async_get("sensor.test_my_sensor")
entry = entity_reg.async_get("sensor.test_mysensor")
assert entry is not None
assert entry.unique_id == "my_sensor"
assert entry.entity_category is EntityCategory.CONFIG
@ -106,12 +106,12 @@ async def test_generic_numeric_sensor_state_class_measurement(
user_service=user_service,
states=states,
)
state = hass.states.get("sensor.test_my_sensor")
state = hass.states.get("sensor.test_mysensor")
assert state is not None
assert state.state == "50"
assert state.attributes[ATTR_STATE_CLASS] == SensorStateClass.MEASUREMENT
entity_reg = er.async_get(hass)
entry = entity_reg.async_get("sensor.test_my_sensor")
entry = entity_reg.async_get("sensor.test_mysensor")
assert entry is not None
assert entry.unique_id == "my_sensor"
assert entry.entity_category is None
@ -140,7 +140,7 @@ async def test_generic_numeric_sensor_device_class_timestamp(
user_service=user_service,
states=states,
)
state = hass.states.get("sensor.test_my_sensor")
state = hass.states.get("sensor.test_mysensor")
assert state is not None
assert state.state == "2023-06-22T18:43:52+00:00"
@ -169,7 +169,7 @@ async def test_generic_numeric_sensor_legacy_last_reset_convert(
user_service=user_service,
states=states,
)
state = hass.states.get("sensor.test_my_sensor")
state = hass.states.get("sensor.test_mysensor")
assert state is not None
assert state.state == "50"
assert state.attributes[ATTR_STATE_CLASS] == SensorStateClass.TOTAL_INCREASING
@ -195,7 +195,7 @@ async def test_generic_numeric_sensor_no_state(
user_service=user_service,
states=states,
)
state = hass.states.get("sensor.test_my_sensor")
state = hass.states.get("sensor.test_mysensor")
assert state is not None
assert state.state == STATE_UNKNOWN
@ -220,7 +220,7 @@ async def test_generic_numeric_sensor_nan_state(
user_service=user_service,
states=states,
)
state = hass.states.get("sensor.test_my_sensor")
state = hass.states.get("sensor.test_mysensor")
assert state is not None
assert state.state == STATE_UNKNOWN
@ -245,7 +245,7 @@ async def test_generic_numeric_sensor_missing_state(
user_service=user_service,
states=states,
)
state = hass.states.get("sensor.test_my_sensor")
state = hass.states.get("sensor.test_mysensor")
assert state is not None
assert state.state == STATE_UNKNOWN
@ -272,6 +272,6 @@ async def test_generic_text_sensor(
user_service=user_service,
states=states,
)
state = hass.states.get("sensor.test_my_sensor")
state = hass.states.get("sensor.test_mysensor")
assert state is not None
assert state.state == "i am a teapot"

View File

@ -34,14 +34,14 @@ async def test_switch_generic_entity(
user_service=user_service,
states=states,
)
state = hass.states.get("switch.test_my_switch")
state = hass.states.get("switch.test_myswitch")
assert state is not None
assert state.state == STATE_ON
await hass.services.async_call(
SWITCH_DOMAIN,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: "switch.test_my_switch"},
{ATTR_ENTITY_ID: "switch.test_myswitch"},
blocking=True,
)
mock_client.switch_command.assert_has_calls([call(1, True)])
@ -49,7 +49,7 @@ async def test_switch_generic_entity(
await hass.services.async_call(
SWITCH_DOMAIN,
SERVICE_TURN_OFF,
{ATTR_ENTITY_ID: "switch.test_my_switch"},
{ATTR_ENTITY_ID: "switch.test_myswitch"},
blocking=True,
)
mock_client.switch_command.assert_has_calls([call(1, False)])