diff --git a/.coveragerc b/.coveragerc index dcc51b83cc5..4971581a2bc 100644 --- a/.coveragerc +++ b/.coveragerc @@ -550,7 +550,6 @@ omit = homeassistant/components/homematic/sensor.py homeassistant/components/homematic/switch.py homeassistant/components/homeworks/__init__.py - homeassistant/components/homeworks/button.py homeassistant/components/horizon/media_player.py homeassistant/components/hp_ilo/sensor.py homeassistant/components/huawei_lte/__init__.py diff --git a/tests/components/homeworks/test_button.py b/tests/components/homeworks/test_button.py new file mode 100644 index 00000000000..6f0250d980a --- /dev/null +++ b/tests/components/homeworks/test_button.py @@ -0,0 +1,57 @@ +"""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",)