Add timezone testing in holiday (#120497)

This commit is contained in:
G Johansson 2024-06-26 09:40:29 +02:00 committed by GitHub
parent 1b88448914
commit c085057847
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,6 +3,7 @@
from datetime import datetime, timedelta
from freezegun.api import FrozenDateTimeFactory
import pytest
from homeassistant.components.calendar import (
DOMAIN as CALENDAR_DOMAIN,
@ -17,12 +18,18 @@ from homeassistant.util import dt as dt_util
from tests.common import MockConfigEntry, async_fire_time_changed
@pytest.mark.parametrize(
"time_zone", ["Asia/Tokyo", "Europe/Berlin", "America/Chicago", "US/Hawaii"]
)
async def test_holiday_calendar_entity(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
time_zone: str,
) -> None:
"""Test HolidayCalendarEntity functionality."""
freezer.move_to(datetime(2023, 1, 1, 12, tzinfo=dt_util.UTC))
await hass.config.async_set_time_zone(time_zone)
zone = await dt_util.async_get_time_zone(time_zone)
freezer.move_to(datetime(2023, 1, 1, 0, 1, 1, tzinfo=zone)) # New Years Day
config_entry = MockConfigEntry(
domain=DOMAIN,
@ -64,8 +71,16 @@ async def test_holiday_calendar_entity(
assert state is not None
assert state.state == "on"
freezer.move_to(
datetime(2023, 1, 2, 0, 1, 1, tzinfo=zone)
) # Day after New Years Day
state = hass.states.get("calendar.united_states_ak")
assert state is not None
assert state.state == "on"
# Test holidays for the next year
freezer.move_to(datetime(2023, 12, 31, 12, tzinfo=dt_util.UTC))
freezer.move_to(datetime(2023, 12, 31, 12, tzinfo=zone))
response = await hass.services.async_call(
CALENDAR_DOMAIN,
@ -91,12 +106,18 @@ async def test_holiday_calendar_entity(
}
@pytest.mark.parametrize(
"time_zone", ["Asia/Tokyo", "Europe/Berlin", "America/Chicago", "US/Hawaii"]
)
async def test_default_language(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
time_zone: str,
) -> None:
"""Test default language."""
freezer.move_to(datetime(2023, 1, 1, 12, tzinfo=dt_util.UTC))
await hass.config.async_set_time_zone(time_zone)
zone = await dt_util.async_get_time_zone(time_zone)
freezer.move_to(datetime(2023, 1, 1, 12, tzinfo=zone))
config_entry = MockConfigEntry(
domain=DOMAIN,
@ -162,12 +183,18 @@ async def test_default_language(
}
@pytest.mark.parametrize(
"time_zone", ["Asia/Tokyo", "Europe/Berlin", "America/Chicago", "US/Hawaii"]
)
async def test_no_language(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
time_zone: str,
) -> None:
"""Test language defaults to English if language not exist."""
freezer.move_to(datetime(2023, 1, 1, 12, tzinfo=dt_util.UTC))
await hass.config.async_set_time_zone(time_zone)
zone = await dt_util.async_get_time_zone(time_zone)
freezer.move_to(datetime(2023, 1, 1, 12, tzinfo=zone))
config_entry = MockConfigEntry(
domain=DOMAIN,
@ -203,12 +230,18 @@ async def test_no_language(
}
@pytest.mark.parametrize(
"time_zone", ["Asia/Tokyo", "Europe/Berlin", "America/Chicago", "US/Hawaii"]
)
async def test_no_next_event(
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
time_zone: str,
) -> None:
"""Test if there is no next event."""
freezer.move_to(datetime(2023, 1, 1, 12, tzinfo=dt_util.UTC))
await hass.config.async_set_time_zone(time_zone)
zone = await dt_util.async_get_time_zone(time_zone)
freezer.move_to(datetime(2023, 1, 1, 12, tzinfo=zone))
config_entry = MockConfigEntry(
domain=DOMAIN,
@ -221,7 +254,7 @@ async def test_no_next_event(
await hass.async_block_till_done()
# Move time to out of reach
freezer.move_to(datetime(dt_util.now().year + 5, 1, 1, 12, tzinfo=dt_util.UTC))
freezer.move_to(datetime(dt_util.now().year + 5, 1, 1, 12, tzinfo=zone))
async_fire_time_changed(hass)
state = hass.states.get("calendar.germany")
@ -230,15 +263,22 @@ async def test_no_next_event(
assert state.attributes == {"friendly_name": "Germany"}
@pytest.mark.parametrize(
"time_zone", ["Asia/Tokyo", "Europe/Berlin", "America/Chicago", "US/Hawaii"]
)
async def test_language_not_exist(
hass: HomeAssistant, freezer: FrozenDateTimeFactory
hass: HomeAssistant,
freezer: FrozenDateTimeFactory,
time_zone: str,
) -> None:
"""Test when language doesn't exist it will fallback to country default language."""
await hass.config.async_set_time_zone(time_zone)
zone = await dt_util.async_get_time_zone(time_zone)
hass.config.language = "nb" # Norweigan language "Norks bokmål"
hass.config.country = "NO"
freezer.move_to(datetime(2023, 1, 1, 12, tzinfo=dt_util.UTC))
freezer.move_to(datetime(2023, 1, 1, 12, tzinfo=zone))
config_entry = MockConfigEntry(
domain=DOMAIN,