mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Fix updating options in Jewish Calendar (#118643)
This commit is contained in:
parent
f18ddb628c
commit
98455cbd93
@ -119,10 +119,10 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
|
|||||||
"""Set up a configuration entry for Jewish calendar."""
|
"""Set up a configuration entry for Jewish calendar."""
|
||||||
language = config_entry.data.get(CONF_LANGUAGE, DEFAULT_LANGUAGE)
|
language = config_entry.data.get(CONF_LANGUAGE, DEFAULT_LANGUAGE)
|
||||||
diaspora = config_entry.data.get(CONF_DIASPORA, DEFAULT_DIASPORA)
|
diaspora = config_entry.data.get(CONF_DIASPORA, DEFAULT_DIASPORA)
|
||||||
candle_lighting_offset = config_entry.data.get(
|
candle_lighting_offset = config_entry.options.get(
|
||||||
CONF_CANDLE_LIGHT_MINUTES, DEFAULT_CANDLE_LIGHT
|
CONF_CANDLE_LIGHT_MINUTES, DEFAULT_CANDLE_LIGHT
|
||||||
)
|
)
|
||||||
havdalah_offset = config_entry.data.get(
|
havdalah_offset = config_entry.options.get(
|
||||||
CONF_HAVDALAH_OFFSET_MINUTES, DEFAULT_HAVDALAH_OFFSET_MINUTES
|
CONF_HAVDALAH_OFFSET_MINUTES, DEFAULT_HAVDALAH_OFFSET_MINUTES
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -154,6 +154,12 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
|
|||||||
async_update_unique_ids(ent_reg, config_entry.entry_id, old_prefix)
|
async_update_unique_ids(ent_reg, config_entry.entry_id, old_prefix)
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
|
||||||
|
|
||||||
|
async def update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
|
||||||
|
# Trigger update of states for all platforms
|
||||||
|
await hass.config_entries.async_reload(config_entry.entry_id)
|
||||||
|
|
||||||
|
config_entry.async_on_unload(config_entry.add_update_listener(update_listener))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,10 +100,23 @@ class JewishCalendarConfigFlow(ConfigFlow, domain=DOMAIN):
|
|||||||
) -> ConfigFlowResult:
|
) -> ConfigFlowResult:
|
||||||
"""Handle the initial step."""
|
"""Handle the initial step."""
|
||||||
if user_input is not None:
|
if user_input is not None:
|
||||||
|
_options = {}
|
||||||
|
if CONF_CANDLE_LIGHT_MINUTES in user_input:
|
||||||
|
_options[CONF_CANDLE_LIGHT_MINUTES] = user_input[
|
||||||
|
CONF_CANDLE_LIGHT_MINUTES
|
||||||
|
]
|
||||||
|
del user_input[CONF_CANDLE_LIGHT_MINUTES]
|
||||||
|
if CONF_HAVDALAH_OFFSET_MINUTES in user_input:
|
||||||
|
_options[CONF_HAVDALAH_OFFSET_MINUTES] = user_input[
|
||||||
|
CONF_HAVDALAH_OFFSET_MINUTES
|
||||||
|
]
|
||||||
|
del user_input[CONF_HAVDALAH_OFFSET_MINUTES]
|
||||||
if CONF_LOCATION in user_input:
|
if CONF_LOCATION in user_input:
|
||||||
user_input[CONF_LATITUDE] = user_input[CONF_LOCATION][CONF_LATITUDE]
|
user_input[CONF_LATITUDE] = user_input[CONF_LOCATION][CONF_LATITUDE]
|
||||||
user_input[CONF_LONGITUDE] = user_input[CONF_LOCATION][CONF_LONGITUDE]
|
user_input[CONF_LONGITUDE] = user_input[CONF_LOCATION][CONF_LONGITUDE]
|
||||||
return self.async_create_entry(title=DEFAULT_NAME, data=user_input)
|
return self.async_create_entry(
|
||||||
|
title=DEFAULT_NAME, data=user_input, options=_options
|
||||||
|
)
|
||||||
|
|
||||||
return self.async_show_form(
|
return self.async_show_form(
|
||||||
step_id="user",
|
step_id="user",
|
||||||
|
@ -9,9 +9,7 @@ from homeassistant.components.jewish_calendar.const import (
|
|||||||
CONF_CANDLE_LIGHT_MINUTES,
|
CONF_CANDLE_LIGHT_MINUTES,
|
||||||
CONF_DIASPORA,
|
CONF_DIASPORA,
|
||||||
CONF_HAVDALAH_OFFSET_MINUTES,
|
CONF_HAVDALAH_OFFSET_MINUTES,
|
||||||
DEFAULT_CANDLE_LIGHT,
|
|
||||||
DEFAULT_DIASPORA,
|
DEFAULT_DIASPORA,
|
||||||
DEFAULT_HAVDALAH_OFFSET_MINUTES,
|
|
||||||
DEFAULT_LANGUAGE,
|
DEFAULT_LANGUAGE,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
)
|
)
|
||||||
@ -73,10 +71,8 @@ async def test_import_no_options(hass: HomeAssistant, language, diaspora) -> Non
|
|||||||
|
|
||||||
entries = hass.config_entries.async_entries(DOMAIN)
|
entries = hass.config_entries.async_entries(DOMAIN)
|
||||||
assert len(entries) == 1
|
assert len(entries) == 1
|
||||||
assert entries[0].data == conf[DOMAIN] | {
|
for entry_key, entry_val in entries[0].data.items():
|
||||||
CONF_CANDLE_LIGHT_MINUTES: DEFAULT_CANDLE_LIGHT,
|
assert entry_val == conf[DOMAIN][entry_key]
|
||||||
CONF_HAVDALAH_OFFSET_MINUTES: DEFAULT_HAVDALAH_OFFSET_MINUTES,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
async def test_import_with_options(hass: HomeAssistant) -> None:
|
async def test_import_with_options(hass: HomeAssistant) -> None:
|
||||||
@ -99,7 +95,10 @@ async def test_import_with_options(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
entries = hass.config_entries.async_entries(DOMAIN)
|
entries = hass.config_entries.async_entries(DOMAIN)
|
||||||
assert len(entries) == 1
|
assert len(entries) == 1
|
||||||
assert entries[0].data == conf[DOMAIN]
|
for entry_key, entry_val in entries[0].data.items():
|
||||||
|
assert entry_val == conf[DOMAIN][entry_key]
|
||||||
|
for entry_key, entry_val in entries[0].options.items():
|
||||||
|
assert entry_val == conf[DOMAIN][entry_key]
|
||||||
|
|
||||||
|
|
||||||
async def test_single_instance_allowed(
|
async def test_single_instance_allowed(
|
||||||
@ -135,5 +134,7 @@ async def test_options(hass: HomeAssistant, mock_config_entry: MockConfigEntry)
|
|||||||
)
|
)
|
||||||
|
|
||||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||||
assert result["data"][CONF_CANDLE_LIGHT_MINUTES] == 25
|
entries = hass.config_entries.async_entries(DOMAIN)
|
||||||
assert result["data"][CONF_HAVDALAH_OFFSET_MINUTES] == 34
|
assert len(entries) == 1
|
||||||
|
assert entries[0].options[CONF_CANDLE_LIGHT_MINUTES] == 25
|
||||||
|
assert entries[0].options[CONF_HAVDALAH_OFFSET_MINUTES] == 34
|
||||||
|
@ -58,7 +58,10 @@ async def test_import_unique_id_migration(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
entries = hass.config_entries.async_entries(DOMAIN)
|
entries = hass.config_entries.async_entries(DOMAIN)
|
||||||
assert len(entries) == 1
|
assert len(entries) == 1
|
||||||
assert entries[0].data == yaml_conf[DOMAIN]
|
for entry_key, entry_val in entries[0].data.items():
|
||||||
|
assert entry_val == yaml_conf[DOMAIN][entry_key]
|
||||||
|
for entry_key, entry_val in entries[0].options.items():
|
||||||
|
assert entry_val == yaml_conf[DOMAIN][entry_key]
|
||||||
|
|
||||||
# Assert that the unique_id was updated
|
# Assert that the unique_id was updated
|
||||||
new_unique_id = ent_reg.async_get(sample_entity.entity_id).unique_id
|
new_unique_id = ent_reg.async_get(sample_entity.entity_id).unique_id
|
||||||
|
@ -519,6 +519,8 @@ async def test_shabbat_times_sensor(
|
|||||||
data={
|
data={
|
||||||
CONF_LANGUAGE: language,
|
CONF_LANGUAGE: language,
|
||||||
CONF_DIASPORA: diaspora,
|
CONF_DIASPORA: diaspora,
|
||||||
|
},
|
||||||
|
options={
|
||||||
CONF_CANDLE_LIGHT_MINUTES: candle_lighting,
|
CONF_CANDLE_LIGHT_MINUTES: candle_lighting,
|
||||||
CONF_HAVDALAH_OFFSET_MINUTES: havdalah,
|
CONF_HAVDALAH_OFFSET_MINUTES: havdalah,
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user