Show torah reading during weekdays (#17447)

* Add support for showing torah reading on weekdays as well

* Update docstrings for test functions
This commit is contained in:
Tsvi Mostovicz 2018-10-15 00:55:11 +03:00 committed by Fabian Affolter
parent 3edcc9420a
commit c5905ee5ca
2 changed files with 24 additions and 7 deletions

View File

@ -4,6 +4,7 @@ Platform to retrieve Jewish calendar information for Home Assistant.
For more details about this platform, please refer to the documentation at For more details about this platform, please refer to the documentation at
https://home-assistant.io/components/sensor.jewish_calendar/ https://home-assistant.io/components/sensor.jewish_calendar/
""" """
from datetime import timedelta
import logging import logging
import voluptuous as vol import voluptuous as vol
@ -107,16 +108,20 @@ class JewishCalSensor(Entity):
import hdate import hdate
today = dt_util.now().date() today = dt_util.now().date()
upcoming_saturday = today + timedelta((12 - today.weekday()) % 7)
date = hdate.HDate( date = hdate.HDate(
today, diaspora=self.diaspora, hebrew=self._hebrew) today, diaspora=self.diaspora, hebrew=self._hebrew)
upcoming_shabbat = hdate.HDate(
upcoming_saturday, diaspora=self.diaspora, hebrew=self._hebrew)
if self.type == 'date': if self.type == 'date':
self._state = hdate.date.get_hebrew_date( self._state = hdate.date.get_hebrew_date(
date.h_day, date.h_month, date.h_year, hebrew=self._hebrew) date.h_day, date.h_month, date.h_year, hebrew=self._hebrew)
elif self.type == 'weekly_portion': elif self.type == 'weekly_portion':
self._state = hdate.date.get_parashe( self._state = hdate.date.get_parashe(
date.get_reading(self.diaspora), hebrew=self._hebrew) upcoming_shabbat.get_reading(self.diaspora),
hebrew=self._hebrew)
elif self.type == 'holiday_name': elif self.type == 'holiday_name':
try: try:
description = next( description = next(

View File

@ -85,7 +85,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
self.assertEqual(sensor.state, "כ\"ג באלול ה\' תשע\"ח") self.assertEqual(sensor.state, "כ\"ג באלול ה\' תשע\"ח")
def test_jewish_calendar_sensor_holiday_name(self): def test_jewish_calendar_sensor_holiday_name(self):
"""Test Jewish calendar sensor date output in hebrew.""" """Test Jewish calendar sensor holiday name output in hebrew."""
test_time = dt(2018, 9, 10) test_time = dt(2018, 9, 10)
sensor = JewishCalSensor( sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='holiday_name', name='test', language='hebrew', sensor_type='holiday_name',
@ -97,7 +97,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
self.assertEqual(sensor.state, "א\' ראש השנה") self.assertEqual(sensor.state, "א\' ראש השנה")
def test_jewish_calendar_sensor_holiday_name_english(self): def test_jewish_calendar_sensor_holiday_name_english(self):
"""Test Jewish calendar sensor date output in hebrew.""" """Test Jewish calendar sensor holiday name output in english."""
test_time = dt(2018, 9, 10) test_time = dt(2018, 9, 10)
sensor = JewishCalSensor( sensor = JewishCalSensor(
name='test', language='english', sensor_type='holiday_name', name='test', language='english', sensor_type='holiday_name',
@ -109,7 +109,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
self.assertEqual(sensor.state, "Rosh Hashana I") self.assertEqual(sensor.state, "Rosh Hashana I")
def test_jewish_calendar_sensor_holyness(self): def test_jewish_calendar_sensor_holyness(self):
"""Test Jewish calendar sensor date output in hebrew.""" """Test Jewish calendar sensor holyness value."""
test_time = dt(2018, 9, 10) test_time = dt(2018, 9, 10)
sensor = JewishCalSensor( sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='holyness', name='test', language='hebrew', sensor_type='holyness',
@ -121,7 +121,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
self.assertEqual(sensor.state, 1) self.assertEqual(sensor.state, 1)
def test_jewish_calendar_sensor_torah_reading(self): def test_jewish_calendar_sensor_torah_reading(self):
"""Test Jewish calendar sensor date output in hebrew.""" """Test Jewish calendar sensor torah reading in hebrew."""
test_time = dt(2018, 9, 8) test_time = dt(2018, 9, 8)
sensor = JewishCalSensor( sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='weekly_portion', name='test', language='hebrew', sensor_type='weekly_portion',
@ -133,7 +133,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
self.assertEqual(sensor.state, "פרשת נצבים") self.assertEqual(sensor.state, "פרשת נצבים")
def test_jewish_calendar_sensor_first_stars_ny(self): def test_jewish_calendar_sensor_first_stars_ny(self):
"""Test Jewish calendar sensor date output in hebrew.""" """Test Jewish calendar sensor first stars time in NY, US."""
test_time = dt(2018, 9, 8) test_time = dt(2018, 9, 8)
sensor = JewishCalSensor( sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='first_stars', name='test', language='hebrew', sensor_type='first_stars',
@ -145,7 +145,7 @@ class TestJewishCalenderSensor(unittest.TestCase):
self.assertEqual(sensor.state, time(19, 48)) self.assertEqual(sensor.state, time(19, 48))
def test_jewish_calendar_sensor_first_stars_jerusalem(self): def test_jewish_calendar_sensor_first_stars_jerusalem(self):
"""Test Jewish calendar sensor date output in hebrew.""" """Test Jewish calendar sensor first stars time in Jerusalem, IL."""
test_time = dt(2018, 9, 8) test_time = dt(2018, 9, 8)
sensor = JewishCalSensor( sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='first_stars', name='test', language='hebrew', sensor_type='first_stars',
@ -155,3 +155,15 @@ class TestJewishCalenderSensor(unittest.TestCase):
run_coroutine_threadsafe( run_coroutine_threadsafe(
sensor.async_update(), self.hass.loop).result() sensor.async_update(), self.hass.loop).result()
self.assertEqual(sensor.state, time(19, 21)) self.assertEqual(sensor.state, time(19, 21))
def test_jewish_calendar_sensor_torah_reading_weekday(self):
"""Test the sensor showing torah reading also on weekdays."""
test_time = dt(2018, 10, 14)
sensor = JewishCalSensor(
name='test', language='hebrew', sensor_type='weekly_portion',
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, "פרשת לך לך")