Migrate Broadlink to new entity naming style (#80187)
* Migrate Broadlink to new entity naming style Signed-off-by: Patrick ZAJDA <patrick@zajda.fr> * Add some tests Signed-off-by: Patrick ZAJDA <patrick@zajda.fr> Signed-off-by: Patrick ZAJDA <patrick@zajda.fr>
This commit is contained in:
parent
551b3374f1
commit
a717ea8afc
9 changed files with 205 additions and 23 deletions
126
tests/components/broadlink/test_switch.py
Normal file
126
tests/components/broadlink/test_switch.py
Normal file
|
@ -0,0 +1,126 @@
|
|||
"""Tests for Broadlink switches."""
|
||||
from homeassistant.components.broadlink.const import DOMAIN
|
||||
from homeassistant.components.switch import (
|
||||
DOMAIN as SWITCH_DOMAIN,
|
||||
SERVICE_TURN_OFF,
|
||||
SERVICE_TURN_ON,
|
||||
)
|
||||
from homeassistant.const import ATTR_FRIENDLY_NAME, STATE_OFF, STATE_ON, Platform
|
||||
from homeassistant.helpers.entity_registry import async_entries_for_device
|
||||
|
||||
from . import get_device
|
||||
|
||||
from tests.common import mock_device_registry, mock_registry
|
||||
|
||||
|
||||
async def test_switch_setup_works(hass):
|
||||
"""Test a successful setup with a switch."""
|
||||
device = get_device("Dining room")
|
||||
device_registry = mock_device_registry(hass)
|
||||
entity_registry = mock_registry(hass)
|
||||
mock_setup = await device.setup_entry(hass)
|
||||
|
||||
device_entry = device_registry.async_get_device(
|
||||
{(DOMAIN, mock_setup.entry.unique_id)}
|
||||
)
|
||||
entries = async_entries_for_device(entity_registry, device_entry.id)
|
||||
switches = [entry for entry in entries if entry.domain == Platform.SWITCH]
|
||||
assert len(switches) == 1
|
||||
|
||||
switch = switches[0]
|
||||
assert (
|
||||
hass.states.get(switch.entity_id).attributes[ATTR_FRIENDLY_NAME] == device.name
|
||||
)
|
||||
assert hass.states.get(switch.entity_id).state == STATE_OFF
|
||||
assert mock_setup.api.auth.call_count == 1
|
||||
|
||||
|
||||
async def test_switch_turn_off_turn_on(hass):
|
||||
"""Test send turn on and off for a switch."""
|
||||
device = get_device("Dining room")
|
||||
device_registry = mock_device_registry(hass)
|
||||
entity_registry = mock_registry(hass)
|
||||
mock_setup = await device.setup_entry(hass)
|
||||
|
||||
device_entry = device_registry.async_get_device(
|
||||
{(DOMAIN, mock_setup.entry.unique_id)}
|
||||
)
|
||||
entries = async_entries_for_device(entity_registry, device_entry.id)
|
||||
switches = [entry for entry in entries if entry.domain == Platform.SWITCH]
|
||||
assert len(switches) == 1
|
||||
|
||||
switch = switches[0]
|
||||
await hass.services.async_call(
|
||||
SWITCH_DOMAIN,
|
||||
SERVICE_TURN_OFF,
|
||||
{"entity_id": switch.entity_id},
|
||||
blocking=True,
|
||||
)
|
||||
assert hass.states.get(switch.entity_id).state == STATE_OFF
|
||||
|
||||
await hass.services.async_call(
|
||||
SWITCH_DOMAIN,
|
||||
SERVICE_TURN_ON,
|
||||
{"entity_id": switch.entity_id},
|
||||
blocking=True,
|
||||
)
|
||||
assert hass.states.get(switch.entity_id).state == STATE_ON
|
||||
|
||||
assert mock_setup.api.auth.call_count == 1
|
||||
|
||||
|
||||
async def test_slots_switch_setup_works(hass):
|
||||
"""Test a successful setup with a switch with slots."""
|
||||
device = get_device("Gaming room")
|
||||
device_registry = mock_device_registry(hass)
|
||||
entity_registry = mock_registry(hass)
|
||||
mock_setup = await device.setup_entry(hass)
|
||||
|
||||
device_entry = device_registry.async_get_device(
|
||||
{(DOMAIN, mock_setup.entry.unique_id)}
|
||||
)
|
||||
entries = async_entries_for_device(entity_registry, device_entry.id)
|
||||
switches = [entry for entry in entries if entry.domain == Platform.SWITCH]
|
||||
assert len(switches) == 4
|
||||
|
||||
for slot, switch in enumerate(switches):
|
||||
assert (
|
||||
hass.states.get(switch.entity_id).attributes[ATTR_FRIENDLY_NAME]
|
||||
== f"{device.name} S{slot+1}"
|
||||
)
|
||||
assert hass.states.get(switch.entity_id).state == STATE_OFF
|
||||
assert mock_setup.api.auth.call_count == 1
|
||||
|
||||
|
||||
async def test_slots_switch_turn_off_turn_on(hass):
|
||||
"""Test send turn on and off for a switch with slots."""
|
||||
device = get_device("Gaming room")
|
||||
device_registry = mock_device_registry(hass)
|
||||
entity_registry = mock_registry(hass)
|
||||
mock_setup = await device.setup_entry(hass)
|
||||
|
||||
device_entry = device_registry.async_get_device(
|
||||
{(DOMAIN, mock_setup.entry.unique_id)}
|
||||
)
|
||||
entries = async_entries_for_device(entity_registry, device_entry.id)
|
||||
switches = [entry for entry in entries if entry.domain == Platform.SWITCH]
|
||||
assert len(switches) == 4
|
||||
|
||||
for switch in switches:
|
||||
await hass.services.async_call(
|
||||
SWITCH_DOMAIN,
|
||||
SERVICE_TURN_OFF,
|
||||
{"entity_id": switch.entity_id},
|
||||
blocking=True,
|
||||
)
|
||||
assert hass.states.get(switch.entity_id).state == STATE_OFF
|
||||
|
||||
await hass.services.async_call(
|
||||
SWITCH_DOMAIN,
|
||||
SERVICE_TURN_ON,
|
||||
{"entity_id": switch.entity_id},
|
||||
blocking=True,
|
||||
)
|
||||
assert hass.states.get(switch.entity_id).state == STATE_ON
|
||||
|
||||
assert mock_setup.api.auth.call_count == 1
|
Loading…
Add table
Add a link
Reference in a new issue