mirror of
https://github.com/home-assistant/core.git
synced 2025-08-16 19:11:42 +02:00
Updater Component is always available and shows on/off wether an update is available
This commit is contained in:
@@ -21,6 +21,7 @@ import homeassistant.util.dt as dt_util
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
ATTR_RELEASE_NOTES = 'release_notes'
|
||||
ATTR_NEWEST_VERSION = 'newest_version'
|
||||
|
||||
CONF_REPORTING = 'reporting'
|
||||
CONF_COMPONENT_REPORTING = 'include_used_components'
|
||||
@@ -95,15 +96,24 @@ async def async_setup(hass, config):
|
||||
newest = hass.components.hassio.get_homeassistant_version()
|
||||
|
||||
# Validate version
|
||||
update_available = False
|
||||
if StrictVersion(newest) > StrictVersion(current_version):
|
||||
_LOGGER.info("The latest available version is %s", newest)
|
||||
hass.states.async_set(
|
||||
ENTITY_ID, newest, {ATTR_FRIENDLY_NAME: 'Update Available',
|
||||
ATTR_RELEASE_NOTES: releasenotes}
|
||||
)
|
||||
update_available = True
|
||||
elif StrictVersion(newest) == StrictVersion(current_version):
|
||||
_LOGGER.info(
|
||||
"You are on the latest version (%s) of Home Assistant", newest)
|
||||
elif StrictVersion(newest) < StrictVersion(current_version):
|
||||
_LOGGER.warning(
|
||||
"You are before the latest version (%s) of Home Assistant",
|
||||
newest)
|
||||
|
||||
hass.states.async_set(
|
||||
ENTITY_ID, 'on' if update_available else 'off', {
|
||||
ATTR_FRIENDLY_NAME: 'Update Available',
|
||||
ATTR_RELEASE_NOTES: releasenotes,
|
||||
ATTR_NEWEST_VERSION: newest}
|
||||
)
|
||||
|
||||
# Update daily, start 1 hour after startup
|
||||
_dt = dt_util.utcnow() + timedelta(hours=1)
|
||||
|
@@ -46,7 +46,7 @@ def mock_get_uuid():
|
||||
|
||||
|
||||
@asyncio.coroutine
|
||||
def test_new_version_shows_entity_after_hour(
|
||||
def test_new_version_shows_entity_true(
|
||||
hass, mock_get_uuid, mock_get_newest_version):
|
||||
"""Test if new entity is created if new version is available."""
|
||||
mock_get_uuid.return_value = MOCK_HUUID
|
||||
@@ -61,11 +61,13 @@ def test_new_version_shows_entity_after_hour(
|
||||
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1))
|
||||
yield from hass.async_block_till_done()
|
||||
|
||||
assert hass.states.is_state(updater.ENTITY_ID, NEW_VERSION)
|
||||
assert hass.states.is_state(updater.ENTITY_ID, 'on')
|
||||
assert hass.states.get(updater.ENTITY_ID).attributes['newest_version'] is \
|
||||
NEW_VERSION
|
||||
|
||||
|
||||
@asyncio.coroutine
|
||||
def test_same_version_not_show_entity(
|
||||
def test_same_version_shows_entity_false(
|
||||
hass, mock_get_uuid, mock_get_newest_version):
|
||||
"""Test if new entity is created if new version is available."""
|
||||
mock_get_uuid.return_value = MOCK_HUUID
|
||||
@@ -80,7 +82,9 @@ def test_same_version_not_show_entity(
|
||||
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1))
|
||||
yield from hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get(updater.ENTITY_ID) is None
|
||||
assert hass.states.is_state(updater.ENTITY_ID, 'off')
|
||||
assert hass.states.get(updater.ENTITY_ID).attributes['newest_version'] is \
|
||||
MOCK_VERSION
|
||||
|
||||
|
||||
@asyncio.coroutine
|
||||
@@ -100,7 +104,7 @@ def test_disable_reporting(hass, mock_get_uuid, mock_get_newest_version):
|
||||
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1))
|
||||
yield from hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get(updater.ENTITY_ID) is None
|
||||
assert hass.states.is_state(updater.ENTITY_ID, 'off')
|
||||
res = yield from updater.get_newest_version(hass, MOCK_HUUID, MOCK_CONFIG)
|
||||
call = mock_get_newest_version.mock_calls[0][1]
|
||||
assert call[0] is hass
|
||||
@@ -184,4 +188,6 @@ def test_new_version_shows_entity_after_hour_hassio(
|
||||
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1))
|
||||
yield from hass.async_block_till_done()
|
||||
|
||||
assert hass.states.is_state(updater.ENTITY_ID, "999.0")
|
||||
assert hass.states.is_state(updater.ENTITY_ID, 'on')
|
||||
assert hass.states.get(updater.ENTITY_ID).attributes['newest_version'] is \
|
||||
"999.0"
|
||||
|
Reference in New Issue
Block a user