Use freezegun in AEMET tests (#99253)

This commit is contained in:
Álvaro Fernández Rojas 2023-08-29 16:33:12 +02:00 committed by GitHub
parent 5006244f4c
commit 2e0a22fdaf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 55 additions and 49 deletions

View File

@ -2,6 +2,7 @@
from unittest.mock import AsyncMock, MagicMock, patch
from aemet_opendata.exceptions import AuthError
from freezegun.api import FrozenDateTimeFactory
import pytest
from homeassistant import data_entry_flow
@ -9,7 +10,6 @@ from homeassistant.components.aemet.const import CONF_STATION_UPDATES, DOMAIN
from homeassistant.config_entries import SOURCE_USER, ConfigEntryState
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME
from homeassistant.core import HomeAssistant
import homeassistant.util.dt as dt_util
from .util import mock_api_call
@ -59,13 +59,15 @@ async def test_form(hass: HomeAssistant, mock_setup_entry: AsyncMock) -> None:
assert len(mock_setup_entry.mock_calls) == 1
async def test_form_options(hass: HomeAssistant) -> None:
async def test_form_options(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test the form options."""
now = dt_util.parse_datetime("2021-01-09 12:00:00+00:00")
with patch("homeassistant.util.dt.now", return_value=now), patch(
"homeassistant.util.dt.utcnow", return_value=now
), patch(
hass.config.set_time_zone("UTC")
freezer.move_to("2021-01-09 12:00:00+00:00")
with patch(
"homeassistant.components.aemet.AEMET.api_call",
side_effect=mock_api_call,
):
@ -116,13 +118,15 @@ async def test_form_options(hass: HomeAssistant) -> None:
assert entry.state is ConfigEntryState.LOADED
async def test_form_duplicated_id(hass: HomeAssistant) -> None:
async def test_form_duplicated_id(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test setting up duplicated entry."""
now = dt_util.parse_datetime("2021-01-09 12:00:00+00:00")
with patch("homeassistant.util.dt.now", return_value=now), patch(
"homeassistant.util.dt.utcnow", return_value=now
), patch(
hass.config.set_time_zone("UTC")
freezer.move_to("2021-01-09 12:00:00+00:00")
with patch(
"homeassistant.components.aemet.AEMET.api_call",
side_effect=mock_api_call,
):

View File

@ -7,7 +7,6 @@ from homeassistant.components.aemet.const import DOMAIN
from homeassistant.config_entries import ConfigEntryState
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME
from homeassistant.core import HomeAssistant
import homeassistant.util.dt as dt_util
from .util import mock_api_call
@ -21,13 +20,15 @@ CONFIG = {
}
async def test_unload_entry(hass: HomeAssistant) -> None:
"""Test that the options form."""
async def test_unload_entry(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test (un)loading the AEMET integration."""
now = dt_util.parse_datetime("2021-01-09 12:00:00+00:00")
with patch("homeassistant.util.dt.now", return_value=now), patch(
"homeassistant.util.dt.utcnow", return_value=now
), patch(
hass.config.set_time_zone("UTC")
freezer.move_to("2021-01-09 12:00:00+00:00")
with patch(
"homeassistant.components.aemet.AEMET.api_call",
side_effect=mock_api_call,
):

View File

@ -1,5 +1,6 @@
"""The sensor tests for the AEMET OpenData platform."""
from unittest.mock import patch
from freezegun.api import FrozenDateTimeFactory
from homeassistant.components.weather import (
ATTR_CONDITION_PARTLYCLOUDY,
@ -12,15 +13,15 @@ import homeassistant.util.dt as dt_util
from .util import async_init_integration
async def test_aemet_forecast_create_sensors(hass: HomeAssistant) -> None:
async def test_aemet_forecast_create_sensors(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test creation of forecast sensors."""
hass.config.set_time_zone("UTC")
now = dt_util.parse_datetime("2021-01-09 12:00:00+00:00")
with patch("homeassistant.util.dt.now", return_value=now), patch(
"homeassistant.util.dt.utcnow", return_value=now
):
await async_init_integration(hass)
freezer.move_to("2021-01-09 12:00:00+00:00")
await async_init_integration(hass)
state = hass.states.get("sensor.aemet_daily_forecast_condition")
assert state.state == ATTR_CONDITION_PARTLYCLOUDY
@ -73,14 +74,15 @@ async def test_aemet_forecast_create_sensors(hass: HomeAssistant) -> None:
assert state is None
async def test_aemet_weather_create_sensors(hass: HomeAssistant) -> None:
async def test_aemet_weather_create_sensors(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test creation of weather sensors."""
now = dt_util.parse_datetime("2021-01-09 12:00:00+00:00")
with patch("homeassistant.util.dt.now", return_value=now), patch(
"homeassistant.util.dt.utcnow", return_value=now
):
await async_init_integration(hass)
hass.config.set_time_zone("UTC")
freezer.move_to("2021-01-09 12:00:00+00:00")
await async_init_integration(hass)
state = hass.states.get("sensor.aemet_condition")
assert state.state == ATTR_CONDITION_SNOWY

View File

@ -40,15 +40,15 @@ from .util import async_init_integration, mock_api_call
from tests.typing import WebSocketGenerator
async def test_aemet_weather(hass: HomeAssistant) -> None:
async def test_aemet_weather(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test states of the weather."""
hass.config.set_time_zone("UTC")
now = dt_util.parse_datetime("2021-01-09 12:00:00+00:00")
with patch("homeassistant.util.dt.now", return_value=now), patch(
"homeassistant.util.dt.utcnow", return_value=now
):
await async_init_integration(hass)
freezer.move_to("2021-01-09 12:00:00+00:00")
await async_init_integration(hass)
state = hass.states.get("weather.aemet")
assert state
@ -76,8 +76,11 @@ async def test_aemet_weather(hass: HomeAssistant) -> None:
assert state is None
async def test_aemet_weather_legacy(hass: HomeAssistant) -> None:
"""Test states of the weather."""
async def test_aemet_weather_legacy(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
) -> None:
"""Test states of legacy weather."""
registry = er.async_get(hass)
registry.async_get_or_create(
@ -87,11 +90,8 @@ async def test_aemet_weather_legacy(hass: HomeAssistant) -> None:
)
hass.config.set_time_zone("UTC")
now = dt_util.parse_datetime("2021-01-09 12:00:00+00:00")
with patch("homeassistant.util.dt.now", return_value=now), patch(
"homeassistant.util.dt.utcnow", return_value=now
):
await async_init_integration(hass)
freezer.move_to("2021-01-09 12:00:00+00:00")
await async_init_integration(hass)
state = hass.states.get("weather.aemet_daily")
assert state
@ -121,15 +121,14 @@ async def test_aemet_weather_legacy(hass: HomeAssistant) -> None:
async def test_forecast_service(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
snapshot: SnapshotAssertion,
) -> None:
"""Test multiple forecast."""
hass.config.set_time_zone("UTC")
now = dt_util.parse_datetime("2021-01-09 12:00:00+00:00")
with patch("homeassistant.util.dt.now", return_value=now), patch(
"homeassistant.util.dt.utcnow", return_value=now
):
await async_init_integration(hass)
freezer.move_to("2021-01-09 12:00:00+00:00")
await async_init_integration(hass)
response = await hass.services.async_call(
WEATHER_DOMAIN,