diff --git a/tests/components/holiday/test_calendar.py b/tests/components/holiday/test_calendar.py index b5067a467ed..db58b7b1f73 100644 --- a/tests/components/holiday/test_calendar.py +++ b/tests/components/holiday/test_calendar.py @@ -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,