* Generate a new updateDate with every call

This should fix #7459
Tests need to be updated in another commit.

* Replace STATIC_TIME with datetime object check

Removing the "DATE" argument from the Alexa component's configuration (because it is now dynamically generated) requires this commit's changes to the test cases to check that the updateDate data is a datetime type rather than a specific hardcoded value ('2016-10-10T19:51:42.0Z').

* Fix brackets
This commit is contained in:
jumpkick 2017-05-11 12:04:17 -04:00 committed by Paulus Schoutsen
parent 2c8f6a0ad0
commit ef4587f994
2 changed files with 9 additions and 25 deletions

View File

@ -17,7 +17,6 @@ from homeassistant.core import callback
from homeassistant.const import HTTP_BAD_REQUEST
from homeassistant.helpers import template, script, config_validation as cv
from homeassistant.components.http import HomeAssistantView
import homeassistant.util.dt as dt_util
_LOGGER = logging.getLogger(__name__)
@ -36,7 +35,6 @@ CONF_TEXT = 'text'
CONF_FLASH_BRIEFINGS = 'flash_briefings'
CONF_UID = 'uid'
CONF_DATE = 'date'
CONF_TITLE = 'title'
CONF_AUDIO = 'audio'
CONF_TEXT = 'text'
@ -88,7 +86,6 @@ CONFIG_SCHEMA = vol.Schema({
CONF_FLASH_BRIEFINGS: {
cv.string: vol.All(cv.ensure_list, [{
vol.Required(CONF_UID, default=str(uuid.uuid4())): cv.string,
vol.Optional(CONF_DATE, default=datetime.utcnow()): cv.string,
vol.Required(CONF_TITLE): cv.template,
vol.Optional(CONF_AUDIO): cv.template,
vol.Required(CONF_TEXT, default=""): cv.template,
@ -331,10 +328,7 @@ class AlexaFlashBriefingView(HomeAssistantView):
else:
output[ATTR_REDIRECTION_URL] = item.get(CONF_DISPLAY_URL)
if isinstance(item[CONF_DATE], str):
item[CONF_DATE] = dt_util.parse_datetime(item[CONF_DATE])
output[ATTR_UPDATE_DATE] = item[CONF_DATE].strftime(DATE_FORMAT)
output[ATTR_UPDATE_DATE] = datetime.now().strftime(DATE_FORMAT)
briefing.append(output)

View File

@ -19,9 +19,6 @@ calls = []
NPR_NEWS_MP3_URL = "https://pd.npr.org/anon.npr-mp3/npr/news/newscast.mp3"
# 2016-10-10T19:51:42+00:00
STATIC_TIME = datetime.datetime.utcfromtimestamp(1476129102)
@pytest.fixture
def alexa_client(loop, hass, test_client):
@ -39,17 +36,14 @@ def alexa_client(loop, hass, test_client):
"flash_briefings": {
"weather": [
{"title": "Weekly forecast",
"text": "This week it will be sunny.",
"date": "2016-10-09T19:51:42.0Z"},
"text": "This week it will be sunny."},
{"title": "Current conditions",
"text": "Currently it is 80 degrees fahrenheit.",
"date": STATIC_TIME}
"text": "Currently it is 80 degrees fahrenheit."}
],
"news_audio": {
"title": "NPR",
"audio": NPR_NEWS_MP3_URL,
"display_url": "https://npr.org",
"date": STATIC_TIME,
"uid": "uuid"
}
},
@ -436,16 +430,8 @@ def test_flash_briefing_date_from_str(alexa_client):
req = yield from _flash_briefing_req(alexa_client, "weather")
assert req.status == 200
data = yield from req.json()
assert data[0].get(alexa.ATTR_UPDATE_DATE) == "2016-10-09T19:51:42.0Z"
@asyncio.coroutine
def test_flash_briefing_date_from_datetime(alexa_client):
"""Test the response has a valid date from a datetime object."""
req = yield from _flash_briefing_req(alexa_client, "weather")
assert req.status == 200
data = yield from req.json()
assert data[1].get(alexa.ATTR_UPDATE_DATE) == '2016-10-10T19:51:42.0Z'
assert isinstance(datetime.datetime.strptime(data[0].get(
alexa.ATTR_UPDATE_DATE), alexa.DATE_FORMAT), datetime.datetime)
@asyncio.coroutine
@ -463,4 +449,8 @@ def test_flash_briefing_valid(alexa_client):
req = yield from _flash_briefing_req(alexa_client, "news_audio")
assert req.status == 200
json = yield from req.json()
assert isinstance(datetime.datetime.strptime(json[0].get(
alexa.ATTR_UPDATE_DATE), alexa.DATE_FORMAT), datetime.datetime)
json[0].pop(alexa.ATTR_UPDATE_DATE)
data[0].pop(alexa.ATTR_UPDATE_DATE)
assert json == data