Add input_button support to Alexa (#62592)

This commit is contained in:
Franck Nijhof 2021-12-23 07:36:45 +01:00 committed by GitHub
parent 23277181ca
commit 99b2161365
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 4 deletions

View file

@ -16,6 +16,7 @@ from homeassistant.components import (
group,
image_processing,
input_boolean,
input_button,
input_number,
light,
lock,
@ -426,6 +427,7 @@ class SwitchCapabilities(AlexaEntity):
@ENTITY_ADAPTERS.register(button.DOMAIN)
@ENTITY_ADAPTERS.register(input_button.DOMAIN)
class ButtonCapabilities(AlexaEntity):
"""Class to represent Button capabilities."""

View file

@ -9,6 +9,7 @@ from homeassistant.components import (
cover,
fan,
group,
input_button,
input_number,
light,
media_player,
@ -317,6 +318,8 @@ async def async_api_activate(hass, config, directive, context):
service = SERVICE_TURN_ON
if domain == button.DOMAIN:
service = button.SERVICE_PRESS
elif domain == input_button.DOMAIN:
service = input_button.SERVICE_PRESS
await hass.services.async_call(
domain,

View file

@ -3939,12 +3939,20 @@ async def test_initialize_camera_stream(hass, mock_camera, mock_stream):
)
async def test_button(hass):
@pytest.mark.parametrize(
"domain",
["button", "input_button"],
)
async def test_button(hass, domain):
"""Test button discovery."""
device = ("button.ring_doorbell", STATE_UNKNOWN, {"friendly_name": "Ring Doorbell"})
device = (
f"{domain}.ring_doorbell",
STATE_UNKNOWN,
{"friendly_name": "Ring Doorbell"},
)
appliance = await discovery_test(device, hass)
assert appliance["endpointId"] == "button#ring_doorbell"
assert appliance["endpointId"] == f"{domain}#ring_doorbell"
assert appliance["displayCategories"][0] == "ACTIVITY_TRIGGER"
assert appliance["friendlyName"] == "Ring Doorbell"
@ -3955,5 +3963,5 @@ async def test_button(hass):
assert scene_capability["supportsDeactivation"] is False
await assert_scene_controller_works(
"button#ring_doorbell", "button.press", False, hass
f"{domain}#ring_doorbell", f"{domain}.press", False, hass
)