mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Update Flo test to address review comment (#109604)
* Update Flo test to address review comment * update comment * clean up * cleanup * change mock * remove unnecessary assert * review comment
This commit is contained in:
parent
3db0331378
commit
8a9478b714
@ -3,15 +3,13 @@ from datetime import timedelta
|
|||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
from aioflo.errors import RequestError
|
from aioflo.errors import RequestError
|
||||||
import pytest
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
|
|
||||||
from homeassistant.components.flo.const import DOMAIN as FLO_DOMAIN
|
from homeassistant.components.flo.const import DOMAIN as FLO_DOMAIN
|
||||||
from homeassistant.components.flo.device import FloDeviceDataUpdateCoordinator
|
from homeassistant.components.flo.device import FloDeviceDataUpdateCoordinator
|
||||||
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
|
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, STATE_UNAVAILABLE
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.update_coordinator import UpdateFailed
|
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
from homeassistant.util import dt as dt_util
|
|
||||||
|
|
||||||
from .common import TEST_PASSWORD, TEST_USER_ID
|
from .common import TEST_PASSWORD, TEST_USER_ID
|
||||||
|
|
||||||
@ -24,6 +22,7 @@ async def test_device(
|
|||||||
config_entry,
|
config_entry,
|
||||||
aioclient_mock_fixture,
|
aioclient_mock_fixture,
|
||||||
aioclient_mock: AiohttpClientMocker,
|
aioclient_mock: AiohttpClientMocker,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test Flo by Moen devices."""
|
"""Test Flo by Moen devices."""
|
||||||
config_entry.add_to_hass(hass)
|
config_entry.add_to_hass(hass)
|
||||||
@ -83,18 +82,47 @@ async def test_device(
|
|||||||
|
|
||||||
call_count = aioclient_mock.call_count
|
call_count = aioclient_mock.call_count
|
||||||
|
|
||||||
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=90))
|
freezer.tick(timedelta(seconds=90))
|
||||||
|
async_fire_time_changed(hass)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert aioclient_mock.call_count == call_count + 6
|
assert aioclient_mock.call_count == call_count + 6
|
||||||
|
|
||||||
# test error sending device ping
|
|
||||||
|
async def test_device_failures(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
config_entry,
|
||||||
|
aioclient_mock_fixture,
|
||||||
|
aioclient_mock: AiohttpClientMocker,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
|
) -> None:
|
||||||
|
"""Test Flo by Moen devices buffer API failures."""
|
||||||
|
config_entry.add_to_hass(hass)
|
||||||
|
assert await hass.config_entries.async_setup(config_entry.entry_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
def assert_state(state: str) -> None:
|
||||||
|
assert (
|
||||||
|
hass.states.get("sensor.smart_water_shutoff_current_system_mode").state
|
||||||
|
== state
|
||||||
|
)
|
||||||
|
|
||||||
|
assert_state("home")
|
||||||
|
|
||||||
|
async def move_time_and_assert_state(state: str) -> None:
|
||||||
|
freezer.tick(timedelta(seconds=65))
|
||||||
|
async_fire_time_changed(hass)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert_state(state)
|
||||||
|
|
||||||
|
aioclient_mock.clear_requests()
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.flo.device.FloDeviceDataUpdateCoordinator.send_presence_ping",
|
"homeassistant.components.flo.device.FloDeviceDataUpdateCoordinator.send_presence_ping",
|
||||||
side_effect=RequestError,
|
side_effect=RequestError,
|
||||||
), pytest.raises(UpdateFailed):
|
):
|
||||||
# simulate 4 updates failing
|
# simulate 4 updates failing. The failures should be buffered so that it takes 4
|
||||||
await valve._async_update_data()
|
# consecutive failures to mark the device and entities as unavailable.
|
||||||
await valve._async_update_data()
|
await move_time_and_assert_state("home")
|
||||||
await valve._async_update_data()
|
await move_time_and_assert_state("home")
|
||||||
await valve._async_update_data()
|
await move_time_and_assert_state("home")
|
||||||
|
await move_time_and_assert_state(STATE_UNAVAILABLE)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user