mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 09:47:13 +00:00
Change hebrew date at sunset (#17449)
* Change date at sunset * Fix tests to actually run and add fix to component * Make tests pass * Use get_astral_event_next instead of get_astral_event_date * Revert to using get_astral_event_date * Make tox happy: reset state on tearDown
This commit is contained in:
parent
f0693f6f91
commit
87bd2a32e4
@ -13,6 +13,7 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||
from homeassistant.const import CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity import Entity
|
||||
from homeassistant.helpers.sun import get_astral_event_date
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
REQUIREMENTS = ['hdate==0.6.5']
|
||||
@ -107,8 +108,18 @@ class JewishCalSensor(Entity):
|
||||
"""Update the state of the sensor."""
|
||||
import hdate
|
||||
|
||||
today = dt_util.now().date()
|
||||
now = dt_util.as_local(dt_util.now())
|
||||
_LOGGER.debug("Now: %s Timezone = %s", now, now.tzinfo)
|
||||
|
||||
today = now.date()
|
||||
upcoming_saturday = today + timedelta((12 - today.weekday()) % 7)
|
||||
sunset = dt_util.as_local(get_astral_event_date(
|
||||
self.hass, 'sunset', today))
|
||||
|
||||
_LOGGER.debug("Now: %s Sunset: %s", now, sunset)
|
||||
|
||||
if now > sunset:
|
||||
today += timedelta(1)
|
||||
|
||||
date = hdate.HDate(
|
||||
today, diaspora=self.diaspora, hebrew=self._hebrew)
|
||||
|
@ -5,7 +5,7 @@ from datetime import datetime as dt
|
||||
from unittest.mock import patch
|
||||
|
||||
from homeassistant.util.async_ import run_coroutine_threadsafe
|
||||
from homeassistant.util.dt import get_time_zone
|
||||
from homeassistant.util.dt import get_time_zone, set_default_time_zone
|
||||
from homeassistant.setup import setup_component
|
||||
from homeassistant.components.sensor.jewish_calendar import JewishCalSensor
|
||||
from tests.common import get_test_home_assistant
|
||||
@ -24,6 +24,8 @@ class TestJewishCalenderSensor(unittest.TestCase):
|
||||
def tearDown(self):
|
||||
"""Stop everything that was started."""
|
||||
self.hass.stop()
|
||||
# Reset the default timezone, so we don't affect other tests
|
||||
set_default_time_zone(get_time_zone('UTC'))
|
||||
|
||||
def test_jewish_calendar_min_config(self):
|
||||
"""Test minimum jewish calendar configuration."""
|
||||
@ -63,10 +65,14 @@ class TestJewishCalenderSensor(unittest.TestCase):
|
||||
def test_jewish_calendar_sensor_date_output(self):
|
||||
"""Test Jewish calendar sensor date output."""
|
||||
test_time = dt(2018, 9, 3)
|
||||
set_default_time_zone(get_time_zone('UTC'))
|
||||
self.hass.config.latitude = self.TEST_LATITUDE
|
||||
self.hass.config.longitude = self.TEST_LONGITUDE
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='english', sensor_type='date',
|
||||
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
|
||||
timezone="UTC", diaspora=False)
|
||||
timezone=get_time_zone("UTC"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(),
|
||||
@ -76,10 +82,14 @@ class TestJewishCalenderSensor(unittest.TestCase):
|
||||
def test_jewish_calendar_sensor_date_output_hebrew(self):
|
||||
"""Test Jewish calendar sensor date output in hebrew."""
|
||||
test_time = dt(2018, 9, 3)
|
||||
set_default_time_zone(get_time_zone('UTC'))
|
||||
self.hass.config.latitude = self.TEST_LATITUDE
|
||||
self.hass.config.longitude = self.TEST_LONGITUDE
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='hebrew', sensor_type='date',
|
||||
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
|
||||
timezone="UTC", diaspora=False)
|
||||
timezone=get_time_zone("UTC"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(), self.hass.loop).result()
|
||||
@ -88,10 +98,14 @@ class TestJewishCalenderSensor(unittest.TestCase):
|
||||
def test_jewish_calendar_sensor_holiday_name(self):
|
||||
"""Test Jewish calendar sensor holiday name output in hebrew."""
|
||||
test_time = dt(2018, 9, 10)
|
||||
set_default_time_zone(get_time_zone('UTC'))
|
||||
self.hass.config.latitude = self.TEST_LATITUDE
|
||||
self.hass.config.longitude = self.TEST_LONGITUDE
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='hebrew', sensor_type='holiday_name',
|
||||
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
|
||||
timezone="UTC", diaspora=False)
|
||||
timezone=get_time_zone("UTC"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(), self.hass.loop).result()
|
||||
@ -100,10 +114,14 @@ class TestJewishCalenderSensor(unittest.TestCase):
|
||||
def test_jewish_calendar_sensor_holiday_name_english(self):
|
||||
"""Test Jewish calendar sensor holiday name output in english."""
|
||||
test_time = dt(2018, 9, 10)
|
||||
set_default_time_zone(get_time_zone('UTC'))
|
||||
self.hass.config.latitude = self.TEST_LATITUDE
|
||||
self.hass.config.longitude = self.TEST_LONGITUDE
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='english', sensor_type='holiday_name',
|
||||
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
|
||||
timezone="UTC", diaspora=False)
|
||||
timezone=get_time_zone("UTC"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(), self.hass.loop).result()
|
||||
@ -112,10 +130,14 @@ class TestJewishCalenderSensor(unittest.TestCase):
|
||||
def test_jewish_calendar_sensor_holyness(self):
|
||||
"""Test Jewish calendar sensor holyness value."""
|
||||
test_time = dt(2018, 9, 10)
|
||||
set_default_time_zone(get_time_zone('UTC'))
|
||||
self.hass.config.latitude = self.TEST_LATITUDE
|
||||
self.hass.config.longitude = self.TEST_LONGITUDE
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='hebrew', sensor_type='holyness',
|
||||
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
|
||||
timezone="UTC", diaspora=False)
|
||||
timezone=get_time_zone("UTC"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(), self.hass.loop).result()
|
||||
@ -124,10 +146,14 @@ class TestJewishCalenderSensor(unittest.TestCase):
|
||||
def test_jewish_calendar_sensor_torah_reading(self):
|
||||
"""Test Jewish calendar sensor torah reading in hebrew."""
|
||||
test_time = dt(2018, 9, 8)
|
||||
set_default_time_zone(get_time_zone('UTC'))
|
||||
self.hass.config.latitude = self.TEST_LATITUDE
|
||||
self.hass.config.longitude = self.TEST_LONGITUDE
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='hebrew', sensor_type='weekly_portion',
|
||||
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
|
||||
timezone="UTC", diaspora=False)
|
||||
timezone=get_time_zone("UTC"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(), self.hass.loop).result()
|
||||
@ -136,10 +162,15 @@ class TestJewishCalenderSensor(unittest.TestCase):
|
||||
def test_jewish_calendar_sensor_first_stars_ny(self):
|
||||
"""Test Jewish calendar sensor first stars time in NY, US."""
|
||||
test_time = dt(2018, 9, 8)
|
||||
set_default_time_zone(get_time_zone('America/New_York'))
|
||||
self.hass.config.latitude = 40.7128
|
||||
self.hass.config.longitude = -74.0060
|
||||
# self.hass.config.time_zone = get_time_zone("America/New_York")
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='hebrew', sensor_type='first_stars',
|
||||
latitude=40.7128, longitude=-74.0060,
|
||||
timezone=get_time_zone("America/New_York"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(), self.hass.loop).result()
|
||||
@ -147,11 +178,15 @@ class TestJewishCalenderSensor(unittest.TestCase):
|
||||
|
||||
def test_jewish_calendar_sensor_first_stars_jerusalem(self):
|
||||
"""Test Jewish calendar sensor first stars time in Jerusalem, IL."""
|
||||
set_default_time_zone(get_time_zone('Asia/Jerusalem'))
|
||||
test_time = dt(2018, 9, 8)
|
||||
self.hass.config.latitude = self.TEST_LATITUDE
|
||||
self.hass.config.longitude = self.TEST_LONGITUDE
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='hebrew', sensor_type='first_stars',
|
||||
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
|
||||
timezone="Asia/Jerusalem", diaspora=False)
|
||||
timezone=get_time_zone("Asia/Jerusalem"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(), self.hass.loop).result()
|
||||
@ -159,12 +194,50 @@ class TestJewishCalenderSensor(unittest.TestCase):
|
||||
|
||||
def test_jewish_calendar_sensor_torah_reading_weekday(self):
|
||||
"""Test the sensor showing torah reading also on weekdays."""
|
||||
set_default_time_zone(get_time_zone('Asia/Jerusalem'))
|
||||
test_time = dt(2018, 10, 14)
|
||||
self.hass.config.latitude = self.TEST_LATITUDE
|
||||
self.hass.config.longitude = self.TEST_LONGITUDE
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='hebrew', sensor_type='weekly_portion',
|
||||
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
|
||||
timezone="Asia/Jerusalem", diaspora=False)
|
||||
timezone=get_time_zone("Asia/Jerusalem"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(), self.hass.loop).result()
|
||||
assert sensor.state == "פרשת לך לך"
|
||||
|
||||
def test_jewish_calendar_sensor_date_before_sunset(self):
|
||||
"""Test the sensor showing the correct date before sunset."""
|
||||
tz = get_time_zone('Asia/Jerusalem')
|
||||
set_default_time_zone(tz)
|
||||
test_time = tz.localize(dt(2018, 10, 14, 17, 0, 0))
|
||||
self.hass.config.latitude = self.TEST_LATITUDE
|
||||
self.hass.config.longitude = self.TEST_LONGITUDE
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='hebrew', sensor_type='date',
|
||||
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
|
||||
timezone=get_time_zone("Asia/Jerusalem"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(), self.hass.loop).result()
|
||||
assert sensor.state == "ה\' בחשון ה\' תשע\"ט"
|
||||
|
||||
def test_jewish_calendar_sensor_date_after_sunset(self):
|
||||
"""Test the sensor showing the correct date after sunset."""
|
||||
tz = get_time_zone('Asia/Jerusalem')
|
||||
set_default_time_zone(tz)
|
||||
test_time = tz.localize(dt(2018, 10, 14, 19, 0, 0))
|
||||
self.hass.config.latitude = self.TEST_LATITUDE
|
||||
self.hass.config.longitude = self.TEST_LONGITUDE
|
||||
sensor = JewishCalSensor(
|
||||
name='test', language='hebrew', sensor_type='date',
|
||||
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
|
||||
timezone=get_time_zone("Asia/Jerusalem"), diaspora=False)
|
||||
sensor.hass = self.hass
|
||||
with patch('homeassistant.util.dt.now', return_value=test_time):
|
||||
run_coroutine_threadsafe(
|
||||
sensor.async_update(), self.hass.loop).result()
|
||||
assert sensor.state == "ו\' בחשון ה\' תשע\"ט"
|
||||
|
Loading…
x
Reference in New Issue
Block a user