input_datetime guard for unexpected state on restore (#32652)

* input_datetime guard for unexpected state

If state is a time and has_date = true, or the other way around, restore state would error

* Update __init__.py

* Add test
This commit is contained in:
Bram Kragten
2020-03-10 23:15:11 +01:00
committed by GitHub
parent 765882fc4d
commit bbe0f75336
2 changed files with 22 additions and 1 deletions

View File

@ -268,12 +268,15 @@ async def test_restore_state(hass):
State("input_datetime.test_date", "2017-09-07"),
State("input_datetime.test_datetime", "2017-09-07 19:46:00"),
State("input_datetime.test_bogus_data", "this is not a date"),
State("input_datetime.test_was_time", "19:46:00"),
State("input_datetime.test_was_date", "2017-09-07"),
),
)
hass.state = CoreState.starting
initial = datetime.datetime(2017, 1, 1, 23, 42)
default = datetime.datetime(1970, 1, 1, 0, 0)
await async_setup_component(
hass,
@ -288,6 +291,8 @@ async def test_restore_state(hass):
"has_date": True,
"initial": str(initial),
},
"test_was_time": {"has_time": False, "has_date": True},
"test_was_date": {"has_time": True, "has_date": False},
}
},
)
@ -305,6 +310,12 @@ async def test_restore_state(hass):
state_bogus = hass.states.get("input_datetime.test_bogus_data")
assert state_bogus.state == str(initial)
state_was_time = hass.states.get("input_datetime.test_was_time")
assert state_was_time.state == str(default.date())
state_was_date = hass.states.get("input_datetime.test_was_date")
assert state_was_date.state == str(default.time())
async def test_default_value(hass):
"""Test default value if none has been set via initial or restore state."""