core/tests/components/homeworks/test_button.py

59 lines
2.0 KiB
Python

"""Tests for the Lutron Homeworks Series 4 and 8 button."""
from unittest.mock import MagicMock
from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, SERVICE_PRESS
from homeassistant.const import ATTR_ENTITY_ID
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry
async def test_button_service_calls(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_homeworks: MagicMock,
) -> None:
"""Test Homeworks button service call."""
entity_id = "button.foyer_keypad_morning"
mock_controller = MagicMock()
mock_homeworks.return_value = mock_controller
mock_config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(mock_config_entry.entry_id)
await hass.async_block_till_done()
assert entity_id in hass.states.async_entity_ids(BUTTON_DOMAIN)
mock_controller._send.reset_mock()
await hass.services.async_call(
BUTTON_DOMAIN, SERVICE_PRESS, {ATTR_ENTITY_ID: entity_id}, blocking=True
)
assert len(mock_controller._send.mock_calls) == 1
assert mock_controller._send.mock_calls[0][1] == ("KBP, [02:08:02:01], 1",)
async def test_button_service_calls_delay(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_homeworks: MagicMock,
) -> None:
"""Test Homeworks button service call."""
entity_id = "button.foyer_keypad_dim_up"
mock_controller = MagicMock()
mock_homeworks.return_value = mock_controller
mock_config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(mock_config_entry.entry_id)
await hass.async_block_till_done()
assert entity_id in hass.states.async_entity_ids(BUTTON_DOMAIN)
mock_controller._send.reset_mock()
await hass.services.async_call(
BUTTON_DOMAIN, SERVICE_PRESS, {ATTR_ENTITY_ID: entity_id}, blocking=True
)
assert len(mock_controller._send.mock_calls) == 2
assert mock_controller._send.mock_calls[0][1] == ("KBP, [02:08:02:01], 3",)
assert mock_controller._send.mock_calls[1][1] == ("KBR, [02:08:02:01], 3",)