diff --git a/tests/components/freebox/test_binary_sensor.py b/tests/components/freebox/test_binary_sensor.py index ec504a514ad..218ef953ee0 100644 --- a/tests/components/freebox/test_binary_sensor.py +++ b/tests/components/freebox/test_binary_sensor.py @@ -1,29 +1,24 @@ """Tests for the Freebox sensors.""" from copy import deepcopy -from datetime import timedelta from unittest.mock import Mock -from homeassistant.components.freebox.const import DOMAIN -from homeassistant.const import CONF_HOST, CONF_PORT +from freezegun.api import FrozenDateTimeFactory + +from homeassistant.components.binary_sensor import DOMAIN as BINARY_SENSOR_DOMAIN +from homeassistant.components.freebox import SCAN_INTERVAL from homeassistant.core import HomeAssistant -from homeassistant.setup import async_setup_component -import homeassistant.util.dt as dt_util -from .const import DATA_STORAGE_GET_RAIDS, MOCK_HOST, MOCK_PORT +from .common import setup_platform +from .const import DATA_STORAGE_GET_RAIDS -from tests.common import MockConfigEntry, async_fire_time_changed +from tests.common import async_fire_time_changed -async def test_raid_array_degraded(hass: HomeAssistant, router: Mock) -> None: +async def test_raid_array_degraded( + hass: HomeAssistant, freezer: FrozenDateTimeFactory, router: Mock +) -> None: """Test raid array degraded binary sensor.""" - entry = MockConfigEntry( - domain=DOMAIN, - data={CONF_HOST: MOCK_HOST, CONF_PORT: MOCK_PORT}, - unique_id=MOCK_HOST, - ) - entry.add_to_hass(hass) - assert await async_setup_component(hass, DOMAIN, {}) - await hass.async_block_till_done() + await setup_platform(hass, BINARY_SENSOR_DOMAIN) assert ( hass.states.get("binary_sensor.freebox_server_r2_raid_array_0_degraded").state @@ -35,7 +30,8 @@ async def test_raid_array_degraded(hass: HomeAssistant, router: Mock) -> None: data_storage_get_raids_degraded[0]["degraded"] = True router().storage.get_raids.return_value = data_storage_get_raids_degraded # Simulate an update - async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=60)) + freezer.tick(SCAN_INTERVAL) + async_fire_time_changed(hass) # To execute the save await hass.async_block_till_done() assert ( diff --git a/tests/components/freebox/test_button.py b/tests/components/freebox/test_button.py index de15e90f54f..5f72b5968f1 100644 --- a/tests/components/freebox/test_button.py +++ b/tests/components/freebox/test_button.py @@ -1,29 +1,19 @@ """Tests for the Freebox config flow.""" -from unittest.mock import ANY, Mock, patch +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.components.freebox.const import DOMAIN -from homeassistant.const import ATTR_ENTITY_ID, CONF_HOST, CONF_PORT +from homeassistant.const import ATTR_ENTITY_ID from homeassistant.core import HomeAssistant -from homeassistant.setup import async_setup_component -from .const import MOCK_HOST, MOCK_PORT - -from tests.common import MockConfigEntry +from .common import setup_platform -async def test_reboot_button(hass: HomeAssistant, router: Mock) -> None: +async def test_reboot(hass: HomeAssistant, router: Mock) -> None: """Test reboot button.""" - entry = MockConfigEntry( - domain=DOMAIN, - data={CONF_HOST: MOCK_HOST, CONF_PORT: MOCK_PORT}, - unique_id=MOCK_HOST, - ) - entry.add_to_hass(hass) - assert await async_setup_component(hass, DOMAIN, {}) - await hass.async_block_till_done() + entry = await setup_platform(hass, BUTTON_DOMAIN) + assert hass.config_entries.async_entries() == unordered([entry, ANY]) assert router.call_count == 1 @@ -32,6 +22,7 @@ async def test_reboot_button(hass: HomeAssistant, router: Mock) -> None: 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, @@ -42,3 +33,29 @@ async def test_reboot_button(hass: HomeAssistant, router: Mock) -> None: ) 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() diff --git a/tests/components/freebox/test_sensor.py b/tests/components/freebox/test_sensor.py index 41daa79fe4e..801e8508d86 100644 --- a/tests/components/freebox/test_sensor.py +++ b/tests/components/freebox/test_sensor.py @@ -9,11 +9,57 @@ from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN from homeassistant.core import HomeAssistant from .common import setup_platform -from .const import DATA_HOME_GET_NODES, DATA_STORAGE_GET_DISKS +from .const import ( + DATA_CONNECTION_GET_STATUS, + DATA_HOME_GET_NODES, + DATA_STORAGE_GET_DISKS, +) from tests.common import async_fire_time_changed +async def test_network_speed( + hass: HomeAssistant, freezer: FrozenDateTimeFactory, router: Mock +) -> None: + """Test missed call sensor.""" + await setup_platform(hass, SENSOR_DOMAIN) + + assert hass.states.get("sensor.freebox_download_speed").state == "198.9" + assert hass.states.get("sensor.freebox_upload_speed").state == "1440.0" + + # Simulate a changed speed + data_connection_get_status_changed = deepcopy(DATA_CONNECTION_GET_STATUS) + data_connection_get_status_changed["rate_down"] = 123400 + data_connection_get_status_changed["rate_up"] = 432100 + router().connection.get_status.return_value = data_connection_get_status_changed + # Simulate an update + freezer.tick(SCAN_INTERVAL) + async_fire_time_changed(hass) + # To execute the save + await hass.async_block_till_done() + assert hass.states.get("sensor.freebox_download_speed").state == "123.4" + assert hass.states.get("sensor.freebox_upload_speed").state == "432.1" + + +async def test_call( + hass: HomeAssistant, freezer: FrozenDateTimeFactory, router: Mock +) -> None: + """Test missed call sensor.""" + await setup_platform(hass, SENSOR_DOMAIN) + + assert hass.states.get("sensor.freebox_missed_calls").state == "3" + + # Simulate we marked calls as read + data_call_get_calls_marked_as_read = [] + router().call.get_calls_log.return_value = data_call_get_calls_marked_as_read + # Simulate an update + freezer.tick(SCAN_INTERVAL) + async_fire_time_changed(hass) + # To execute the save + await hass.async_block_till_done() + assert hass.states.get("sensor.freebox_missed_calls").state == "0" + + async def test_disk( hass: HomeAssistant, freezer: FrozenDateTimeFactory, router: Mock ) -> None: