Use freezegun in uptimerobot tests (#99046)
This commit is contained in:
parent
0d3663c52a
commit
c827af5826
1 changed files with 29 additions and 12 deletions
|
@ -1,6 +1,7 @@
|
||||||
"""Test the UptimeRobot init."""
|
"""Test the UptimeRobot init."""
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
import pytest
|
import pytest
|
||||||
from pyuptimerobot import UptimeRobotAuthenticationException, UptimeRobotException
|
from pyuptimerobot import UptimeRobotAuthenticationException, UptimeRobotException
|
||||||
|
|
||||||
|
@ -12,7 +13,6 @@ from homeassistant.components.uptimerobot.const import (
|
||||||
from homeassistant.const import STATE_ON, STATE_UNAVAILABLE
|
from homeassistant.const import STATE_ON, STATE_UNAVAILABLE
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import device_registry as dr
|
from homeassistant.helpers import device_registry as dr
|
||||||
from homeassistant.util import dt as dt_util
|
|
||||||
|
|
||||||
from .common import (
|
from .common import (
|
||||||
MOCK_UPTIMEROBOT_CONFIG_ENTRY_DATA,
|
MOCK_UPTIMEROBOT_CONFIG_ENTRY_DATA,
|
||||||
|
@ -93,7 +93,9 @@ async def test_reauthentication_trigger_key_read_only(
|
||||||
|
|
||||||
|
|
||||||
async def test_reauthentication_trigger_after_setup(
|
async def test_reauthentication_trigger_after_setup(
|
||||||
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
|
hass: HomeAssistant,
|
||||||
|
caplog: pytest.LogCaptureFixture,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test reauthentication trigger."""
|
"""Test reauthentication trigger."""
|
||||||
mock_config_entry = await setup_uptimerobot_integration(hass)
|
mock_config_entry = await setup_uptimerobot_integration(hass)
|
||||||
|
@ -106,7 +108,8 @@ async def test_reauthentication_trigger_after_setup(
|
||||||
"pyuptimerobot.UptimeRobot.async_get_monitors",
|
"pyuptimerobot.UptimeRobot.async_get_monitors",
|
||||||
side_effect=UptimeRobotAuthenticationException,
|
side_effect=UptimeRobotAuthenticationException,
|
||||||
):
|
):
|
||||||
async_fire_time_changed(hass, dt_util.utcnow() + COORDINATOR_UPDATE_INTERVAL)
|
freezer.tick(COORDINATOR_UPDATE_INTERVAL)
|
||||||
|
async_fire_time_changed(hass)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
flows = hass.config_entries.flow.async_progress()
|
flows = hass.config_entries.flow.async_progress()
|
||||||
|
@ -125,7 +128,10 @@ async def test_reauthentication_trigger_after_setup(
|
||||||
assert flow["context"]["entry_id"] == mock_config_entry.entry_id
|
assert flow["context"]["entry_id"] == mock_config_entry.entry_id
|
||||||
|
|
||||||
|
|
||||||
async def test_integration_reload(hass: HomeAssistant) -> None:
|
async def test_integration_reload(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
|
) -> None:
|
||||||
"""Test integration reload."""
|
"""Test integration reload."""
|
||||||
mock_entry = await setup_uptimerobot_integration(hass)
|
mock_entry = await setup_uptimerobot_integration(hass)
|
||||||
|
|
||||||
|
@ -134,7 +140,8 @@ async def test_integration_reload(hass: HomeAssistant) -> None:
|
||||||
return_value=mock_uptimerobot_api_response(),
|
return_value=mock_uptimerobot_api_response(),
|
||||||
):
|
):
|
||||||
assert await hass.config_entries.async_reload(mock_entry.entry_id)
|
assert await hass.config_entries.async_reload(mock_entry.entry_id)
|
||||||
async_fire_time_changed(hass, dt_util.utcnow() + COORDINATOR_UPDATE_INTERVAL)
|
freezer.tick(COORDINATOR_UPDATE_INTERVAL)
|
||||||
|
async_fire_time_changed(hass)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
entry = hass.config_entries.async_get_entry(mock_entry.entry_id)
|
entry = hass.config_entries.async_get_entry(mock_entry.entry_id)
|
||||||
|
@ -143,7 +150,9 @@ async def test_integration_reload(hass: HomeAssistant) -> None:
|
||||||
|
|
||||||
|
|
||||||
async def test_update_errors(
|
async def test_update_errors(
|
||||||
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
|
hass: HomeAssistant,
|
||||||
|
caplog: pytest.LogCaptureFixture,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test errors during updates."""
|
"""Test errors during updates."""
|
||||||
await setup_uptimerobot_integration(hass)
|
await setup_uptimerobot_integration(hass)
|
||||||
|
@ -152,7 +161,8 @@ async def test_update_errors(
|
||||||
"pyuptimerobot.UptimeRobot.async_get_monitors",
|
"pyuptimerobot.UptimeRobot.async_get_monitors",
|
||||||
side_effect=UptimeRobotException,
|
side_effect=UptimeRobotException,
|
||||||
):
|
):
|
||||||
async_fire_time_changed(hass, dt_util.utcnow() + COORDINATOR_UPDATE_INTERVAL)
|
freezer.tick(COORDINATOR_UPDATE_INTERVAL)
|
||||||
|
async_fire_time_changed(hass)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert (
|
assert (
|
||||||
hass.states.get(UPTIMEROBOT_BINARY_SENSOR_TEST_ENTITY).state
|
hass.states.get(UPTIMEROBOT_BINARY_SENSOR_TEST_ENTITY).state
|
||||||
|
@ -163,7 +173,8 @@ async def test_update_errors(
|
||||||
"pyuptimerobot.UptimeRobot.async_get_monitors",
|
"pyuptimerobot.UptimeRobot.async_get_monitors",
|
||||||
return_value=mock_uptimerobot_api_response(),
|
return_value=mock_uptimerobot_api_response(),
|
||||||
):
|
):
|
||||||
async_fire_time_changed(hass, dt_util.utcnow() + COORDINATOR_UPDATE_INTERVAL)
|
freezer.tick(COORDINATOR_UPDATE_INTERVAL)
|
||||||
|
async_fire_time_changed(hass)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert hass.states.get(UPTIMEROBOT_BINARY_SENSOR_TEST_ENTITY).state == STATE_ON
|
assert hass.states.get(UPTIMEROBOT_BINARY_SENSOR_TEST_ENTITY).state == STATE_ON
|
||||||
|
|
||||||
|
@ -171,7 +182,8 @@ async def test_update_errors(
|
||||||
"pyuptimerobot.UptimeRobot.async_get_monitors",
|
"pyuptimerobot.UptimeRobot.async_get_monitors",
|
||||||
return_value=mock_uptimerobot_api_response(key=MockApiResponseKey.ERROR),
|
return_value=mock_uptimerobot_api_response(key=MockApiResponseKey.ERROR),
|
||||||
):
|
):
|
||||||
async_fire_time_changed(hass, dt_util.utcnow() + COORDINATOR_UPDATE_INTERVAL)
|
freezer.tick(COORDINATOR_UPDATE_INTERVAL)
|
||||||
|
async_fire_time_changed(hass)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert (
|
assert (
|
||||||
hass.states.get(UPTIMEROBOT_BINARY_SENSOR_TEST_ENTITY).state
|
hass.states.get(UPTIMEROBOT_BINARY_SENSOR_TEST_ENTITY).state
|
||||||
|
@ -181,7 +193,10 @@ async def test_update_errors(
|
||||||
assert "Error fetching uptimerobot data: test error from API" in caplog.text
|
assert "Error fetching uptimerobot data: test error from API" in caplog.text
|
||||||
|
|
||||||
|
|
||||||
async def test_device_management(hass: HomeAssistant) -> None:
|
async def test_device_management(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
|
) -> None:
|
||||||
"""Test that we are adding and removing devices for monitors returned from the API."""
|
"""Test that we are adding and removing devices for monitors returned from the API."""
|
||||||
mock_entry = await setup_uptimerobot_integration(hass)
|
mock_entry = await setup_uptimerobot_integration(hass)
|
||||||
dev_reg = dr.async_get(hass)
|
dev_reg = dr.async_get(hass)
|
||||||
|
@ -201,7 +216,8 @@ async def test_device_management(hass: HomeAssistant) -> None:
|
||||||
data=[MOCK_UPTIMEROBOT_MONITOR, {**MOCK_UPTIMEROBOT_MONITOR, "id": 12345}]
|
data=[MOCK_UPTIMEROBOT_MONITOR, {**MOCK_UPTIMEROBOT_MONITOR, "id": 12345}]
|
||||||
),
|
),
|
||||||
):
|
):
|
||||||
async_fire_time_changed(hass, dt_util.utcnow() + COORDINATOR_UPDATE_INTERVAL)
|
freezer.tick(COORDINATOR_UPDATE_INTERVAL)
|
||||||
|
async_fire_time_changed(hass)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
devices = dr.async_entries_for_config_entry(dev_reg, mock_entry.entry_id)
|
devices = dr.async_entries_for_config_entry(dev_reg, mock_entry.entry_id)
|
||||||
|
@ -218,7 +234,8 @@ async def test_device_management(hass: HomeAssistant) -> None:
|
||||||
"pyuptimerobot.UptimeRobot.async_get_monitors",
|
"pyuptimerobot.UptimeRobot.async_get_monitors",
|
||||||
return_value=mock_uptimerobot_api_response(),
|
return_value=mock_uptimerobot_api_response(),
|
||||||
):
|
):
|
||||||
async_fire_time_changed(hass, dt_util.utcnow() + COORDINATOR_UPDATE_INTERVAL)
|
freezer.tick(COORDINATOR_UPDATE_INTERVAL)
|
||||||
|
async_fire_time_changed(hass)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue