mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 08:47:57 +00:00
Add timezone testing in holiday (#120497)
This commit is contained in:
parent
1b88448914
commit
c085057847
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user