mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 10:17:09 +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 datetime import datetime, timedelta
|
||||||
|
|
||||||
from freezegun.api import FrozenDateTimeFactory
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.calendar import (
|
from homeassistant.components.calendar import (
|
||||||
DOMAIN as CALENDAR_DOMAIN,
|
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
|
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(
|
async def test_holiday_calendar_entity(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
freezer: FrozenDateTimeFactory,
|
freezer: FrozenDateTimeFactory,
|
||||||
|
time_zone: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test HolidayCalendarEntity functionality."""
|
"""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(
|
config_entry = MockConfigEntry(
|
||||||
domain=DOMAIN,
|
domain=DOMAIN,
|
||||||
@ -64,8 +71,16 @@ async def test_holiday_calendar_entity(
|
|||||||
assert state is not None
|
assert state is not None
|
||||||
assert state.state == "on"
|
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
|
# 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(
|
response = await hass.services.async_call(
|
||||||
CALENDAR_DOMAIN,
|
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(
|
async def test_default_language(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
freezer: FrozenDateTimeFactory,
|
freezer: FrozenDateTimeFactory,
|
||||||
|
time_zone: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test default language."""
|
"""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(
|
config_entry = MockConfigEntry(
|
||||||
domain=DOMAIN,
|
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(
|
async def test_no_language(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
freezer: FrozenDateTimeFactory,
|
freezer: FrozenDateTimeFactory,
|
||||||
|
time_zone: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test language defaults to English if language not exist."""
|
"""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(
|
config_entry = MockConfigEntry(
|
||||||
domain=DOMAIN,
|
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(
|
async def test_no_next_event(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
freezer: FrozenDateTimeFactory,
|
freezer: FrozenDateTimeFactory,
|
||||||
|
time_zone: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test if there is no next event."""
|
"""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(
|
config_entry = MockConfigEntry(
|
||||||
domain=DOMAIN,
|
domain=DOMAIN,
|
||||||
@ -221,7 +254,7 @@ async def test_no_next_event(
|
|||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
# Move time to out of reach
|
# 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)
|
async_fire_time_changed(hass)
|
||||||
|
|
||||||
state = hass.states.get("calendar.germany")
|
state = hass.states.get("calendar.germany")
|
||||||
@ -230,15 +263,22 @@ async def test_no_next_event(
|
|||||||
assert state.attributes == {"friendly_name": "Germany"}
|
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(
|
async def test_language_not_exist(
|
||||||
hass: HomeAssistant, freezer: FrozenDateTimeFactory
|
hass: HomeAssistant,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
|
time_zone: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test when language doesn't exist it will fallback to country default language."""
|
"""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.language = "nb" # Norweigan language "Norks bokmål"
|
||||||
hass.config.country = "NO"
|
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(
|
config_entry = MockConfigEntry(
|
||||||
domain=DOMAIN,
|
domain=DOMAIN,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user