Take timezone into consideration when calulating Zmanim. Partial fix for ()

pull/17123/merge
Tsvi Mostovicz 2018-10-04 16:51:56 +03:00 committed by Paulus Schoutsen
parent b61a250321
commit c9976718d4
2 changed files with 37 additions and 9 deletions
homeassistant/components/sensor
tests/components/sensor

View File

@ -64,7 +64,8 @@ async def async_setup_platform(
dev = []
for sensor_type in config[CONF_SENSORS]:
dev.append(JewishCalSensor(
name, language, sensor_type, latitude, longitude, diaspora))
name, language, sensor_type, latitude, longitude,
hass.config.time_zone, diaspora))
async_add_entities(dev, True)
@ -72,7 +73,8 @@ class JewishCalSensor(Entity):
"""Representation of an Jewish calendar sensor."""
def __init__(
self, name, language, sensor_type, latitude, longitude, diaspora):
self, name, language, sensor_type, latitude, longitude, timezone,
diaspora):
"""Initialize the Jewish calendar sensor."""
self.client_name = name
self._name = SENSOR_TYPES[sensor_type][0]
@ -81,6 +83,7 @@ class JewishCalSensor(Entity):
self._state = None
self.latitude = latitude
self.longitude = longitude
self.timezone = timezone
self.diaspora = diaspora
_LOGGER.debug("Sensor %s initialized", self.type)
@ -131,7 +134,7 @@ class JewishCalSensor(Entity):
else:
times = hdate.Zmanim(
date=today, latitude=self.latitude, longitude=self.longitude,
hebrew=self._hebrew).zmanim
timezone=self.timezone, hebrew=self._hebrew).zmanim
self._state = times[self.type].time()
_LOGGER.debug("New value: %s", self._state)

View File

@ -1,5 +1,6 @@
"""The tests for the Jewish calendar sensor platform."""
import unittest
from datetime import time
from datetime import datetime as dt
from unittest.mock import patch
@ -64,7 +65,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
sensor = JewishCalSensor(
name='test', language='english', sensor_type='date',
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
diaspora=False)
timezone="UTC", diaspora=False)
with patch('homeassistant.util.dt.now', return_value=test_time):
run_coroutine_threadsafe(
sensor.async_update(),
@ -77,7 +78,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='date',
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
diaspora=False)
timezone="UTC", diaspora=False)
with patch('homeassistant.util.dt.now', return_value=test_time):
run_coroutine_threadsafe(
sensor.async_update(), self.hass.loop).result()
@ -89,7 +90,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='holiday_name',
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
diaspora=False)
timezone="UTC", diaspora=False)
with patch('homeassistant.util.dt.now', return_value=test_time):
run_coroutine_threadsafe(
sensor.async_update(), self.hass.loop).result()
@ -101,7 +102,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
sensor = JewishCalSensor(
name='test', language='english', sensor_type='holiday_name',
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
diaspora=False)
timezone="UTC", diaspora=False)
with patch('homeassistant.util.dt.now', return_value=test_time):
run_coroutine_threadsafe(
sensor.async_update(), self.hass.loop).result()
@ -113,7 +114,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='holyness',
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
diaspora=False)
timezone="UTC", diaspora=False)
with patch('homeassistant.util.dt.now', return_value=test_time):
run_coroutine_threadsafe(
sensor.async_update(), self.hass.loop).result()
@ -125,8 +126,32 @@ class TestJewishCalenderSensor(unittest.TestCase):
sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='weekly_portion',
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
diaspora=False)
timezone="UTC", diaspora=False)
with patch('homeassistant.util.dt.now', return_value=test_time):
run_coroutine_threadsafe(
sensor.async_update(), self.hass.loop).result()
self.assertEqual(sensor.state, "פרשת נצבים")
def test_jewish_calendar_sensor_first_stars_ny(self):
"""Test Jewish calendar sensor date output in hebrew."""
test_time = dt(2018, 9, 8)
sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='first_stars',
latitude=40.7128, longitude=-74.0060,
timezone="America/New_York", diaspora=False)
with patch('homeassistant.util.dt.now', return_value=test_time):
run_coroutine_threadsafe(
sensor.async_update(), self.hass.loop).result()
self.assertEqual(sensor.state, time(19, 48))
def test_jewish_calendar_sensor_first_stars_jerusalem(self):
"""Test Jewish calendar sensor date output in hebrew."""
test_time = dt(2018, 9, 8)
sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='first_stars',
latitude=self.TEST_LATITUDE, longitude=self.TEST_LONGITUDE,
timezone="Asia/Jerusalem", diaspora=False)
with patch('homeassistant.util.dt.now', return_value=test_time):
run_coroutine_threadsafe(
sensor.async_update(), self.hass.loop).result()
self.assertEqual(sensor.state, time(19, 21))