mirror of
https://github.com/home-assistant/core.git
synced 2025-07-14 08:47:10 +00:00
Fix logbook JSON serialize issue (#13229)
* Fix logbook JSON serialize issue * Address flakiness * Lint * deflake ? * Deflake 2
This commit is contained in:
parent
ee6d6a8859
commit
170b8671b9
@ -139,9 +139,12 @@ class LogbookView(HomeAssistantView):
|
|||||||
end_day = start_day + timedelta(days=1)
|
end_day = start_day + timedelta(days=1)
|
||||||
hass = request.app['hass']
|
hass = request.app['hass']
|
||||||
|
|
||||||
events = yield from hass.async_add_job(
|
def json_events():
|
||||||
_get_events, hass, self.config, start_day, end_day)
|
"""Fetch events and generate JSON."""
|
||||||
response = yield from hass.async_add_job(self.json, events)
|
return self.json(list(
|
||||||
|
_get_events(hass, self.config, start_day, end_day)))
|
||||||
|
|
||||||
|
response = yield from hass.async_add_job(json_events)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ import homeassistant.helpers.config_validation as cv
|
|||||||
from homeassistant.helpers.entityfilter import generate_filter
|
from homeassistant.helpers.entityfilter import generate_filter
|
||||||
from homeassistant.helpers.typing import ConfigType
|
from homeassistant.helpers.typing import ConfigType
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
|
from homeassistant.loader import bind_hass
|
||||||
|
|
||||||
from . import migration, purge
|
from . import migration, purge
|
||||||
from .const import DATA_INSTANCE
|
from .const import DATA_INSTANCE
|
||||||
@ -87,14 +88,10 @@ CONFIG_SCHEMA = vol.Schema({
|
|||||||
}, extra=vol.ALLOW_EXTRA)
|
}, extra=vol.ALLOW_EXTRA)
|
||||||
|
|
||||||
|
|
||||||
@asyncio.coroutine
|
@bind_hass
|
||||||
def wait_connection_ready(hass):
|
async def wait_connection_ready(hass):
|
||||||
"""
|
"""Wait till the connection is ready."""
|
||||||
Wait till the connection is ready.
|
return await hass.data[DATA_INSTANCE].async_db_ready
|
||||||
|
|
||||||
Returns a coroutine object.
|
|
||||||
"""
|
|
||||||
return (yield from hass.data[DATA_INSTANCE].async_db_ready)
|
|
||||||
|
|
||||||
|
|
||||||
def run_information(hass, point_in_time: Optional[datetime] = None):
|
def run_information(hass, point_in_time: Optional[datetime] = None):
|
||||||
|
@ -483,11 +483,13 @@ class TestComponentHistory(unittest.TestCase):
|
|||||||
return zero, four, states
|
return zero, four, states
|
||||||
|
|
||||||
|
|
||||||
async def test_fetch_period_api(hass, test_client):
|
async def test_fetch_period_api(hass, aiohttp_client):
|
||||||
"""Test the fetch period view for history."""
|
"""Test the fetch period view for history."""
|
||||||
await hass.async_add_job(init_recorder_component, hass)
|
await hass.async_add_job(init_recorder_component, hass)
|
||||||
await async_setup_component(hass, 'history', {})
|
await async_setup_component(hass, 'history', {})
|
||||||
client = await test_client(hass.http.app)
|
await hass.components.recorder.wait_connection_ready()
|
||||||
|
await hass.async_add_job(hass.data[recorder.DATA_INSTANCE].block_till_done)
|
||||||
|
client = await aiohttp_client(hass.http.app)
|
||||||
response = await client.get(
|
response = await client.get(
|
||||||
'/api/history/period/{}'.format(dt_util.utcnow().isoformat()))
|
'/api/history/period/{}'.format(dt_util.utcnow().isoformat()))
|
||||||
assert response.status == 200
|
assert response.status == 200
|
||||||
|
@ -10,8 +10,8 @@ from homeassistant.const import (
|
|||||||
EVENT_STATE_CHANGED, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP,
|
EVENT_STATE_CHANGED, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP,
|
||||||
ATTR_HIDDEN, STATE_NOT_HOME, STATE_ON, STATE_OFF)
|
ATTR_HIDDEN, STATE_NOT_HOME, STATE_ON, STATE_OFF)
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
from homeassistant.components import logbook
|
from homeassistant.components import logbook, recorder
|
||||||
from homeassistant.setup import setup_component
|
from homeassistant.setup import setup_component, async_setup_component
|
||||||
|
|
||||||
from tests.common import (
|
from tests.common import (
|
||||||
init_recorder_component, get_test_home_assistant)
|
init_recorder_component, get_test_home_assistant)
|
||||||
@ -555,3 +555,15 @@ class TestComponentLogbook(unittest.TestCase):
|
|||||||
'old_state': state,
|
'old_state': state,
|
||||||
'new_state': state,
|
'new_state': state,
|
||||||
}, time_fired=event_time_fired)
|
}, time_fired=event_time_fired)
|
||||||
|
|
||||||
|
|
||||||
|
async def test_logbook_view(hass, aiohttp_client):
|
||||||
|
"""Test the logbook view."""
|
||||||
|
await hass.async_add_job(init_recorder_component, hass)
|
||||||
|
await async_setup_component(hass, 'logbook', {})
|
||||||
|
await hass.components.recorder.wait_connection_ready()
|
||||||
|
await hass.async_add_job(hass.data[recorder.DATA_INSTANCE].block_till_done)
|
||||||
|
client = await aiohttp_client(hass.http.app)
|
||||||
|
response = await client.get(
|
||||||
|
'/api/logbook/{}'.format(dt_util.utcnow().isoformat()))
|
||||||
|
assert response.status == 200
|
||||||
|
Loading…
x
Reference in New Issue
Block a user