"""Tests for the Freebox buttons.""" from unittest.mock import ANY, AsyncMock, Mock, patch from pytest_unordered import unordered from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, SERVICE_PRESS from homeassistant.const import ATTR_ENTITY_ID from homeassistant.core import HomeAssistant from .common import setup_platform async def test_reboot(hass: HomeAssistant, router: Mock) -> None: """Test reboot button.""" entry = await setup_platform(hass, BUTTON_DOMAIN) assert hass.config_entries.async_entries() == unordered([entry, ANY]) assert router.call_count == 1 assert router().open.call_count == 1 with patch( "homeassistant.components.freebox.router.FreeboxRouter.reboot" ) as mock_service: mock_service.assert_not_called() await hass.services.async_call( BUTTON_DOMAIN, SERVICE_PRESS, service_data={ ATTR_ENTITY_ID: "button.reboot_freebox", }, blocking=True, ) await hass.async_block_till_done() mock_service.assert_called_once() async def test_mark_calls_as_read(hass: HomeAssistant, router: Mock) -> None: """Test mark calls as read button.""" entry = await setup_platform(hass, BUTTON_DOMAIN) assert hass.config_entries.async_entries() == unordered([entry, ANY]) assert router.call_count == 1 assert router().open.call_count == 1 with patch( "homeassistant.components.freebox.router.FreeboxRouter.call" ) as mock_service: mock_service.mark_calls_log_as_read = AsyncMock() mock_service.mark_calls_log_as_read.assert_not_called() await hass.services.async_call( BUTTON_DOMAIN, SERVICE_PRESS, service_data={ ATTR_ENTITY_ID: "button.mark_calls_as_read", }, blocking=True, ) await hass.async_block_till_done() mock_service.mark_calls_log_as_read.assert_called_once()