Add some tests to Freebox (#99755)

This commit is contained in:
Quentame 2023-09-13 20:22:47 +02:00 committed by GitHub
parent 9631c0ba2b
commit 8625bf7894
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 93 additions and 34 deletions

View File

@ -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 (

View File

@ -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()

View File

@ -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: