114 lines
3.4 KiB
Python
114 lines
3.4 KiB
Python
"""The tests for the Home Assistant SpaceAPI component."""
|
|
# pylint: disable=protected-access
|
|
from unittest.mock import patch
|
|
|
|
import pytest
|
|
from tests.common import mock_coro
|
|
|
|
from homeassistant.components.spaceapi import (
|
|
DOMAIN, SPACEAPI_VERSION, URL_API_SPACEAPI)
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
CONFIG = {
|
|
DOMAIN: {
|
|
'space': 'Home',
|
|
'logo': 'https://home-assistant.io/logo.png',
|
|
'url': 'https://home-assistant.io',
|
|
'location': {'address': 'In your Home'},
|
|
'contact': {'email': 'hello@home-assistant.io'},
|
|
'issue_report_channels': ['email'],
|
|
'state': {
|
|
'entity_id': 'test.test_door',
|
|
'icon_open': 'https://home-assistant.io/open.png',
|
|
'icon_closed': 'https://home-assistant.io/close.png',
|
|
},
|
|
'sensors': {
|
|
'temperature': ['test.temp1', 'test.temp2'],
|
|
'humidity': ['test.hum1'],
|
|
}
|
|
}
|
|
}
|
|
|
|
SENSOR_OUTPUT = {
|
|
'temperature': [
|
|
{
|
|
'location': 'Home',
|
|
'name': 'temp1',
|
|
'unit': '°C',
|
|
'value': '25'
|
|
},
|
|
{
|
|
'location': 'Home',
|
|
'name': 'temp2',
|
|
'unit': '°C',
|
|
'value': '23'
|
|
},
|
|
],
|
|
'humidity': [
|
|
{
|
|
'location': 'Home',
|
|
'name': 'hum1',
|
|
'unit': '%',
|
|
'value': '88'
|
|
},
|
|
]
|
|
}
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_client(hass, aiohttp_client):
|
|
"""Start the Home Assistant HTTP component."""
|
|
with patch('homeassistant.components.spaceapi',
|
|
return_value=mock_coro(True)):
|
|
hass.loop.run_until_complete(
|
|
async_setup_component(hass, 'spaceapi', CONFIG))
|
|
|
|
hass.states.async_set('test.temp1', 25,
|
|
attributes={'unit_of_measurement': '°C'})
|
|
hass.states.async_set('test.temp2', 23,
|
|
attributes={'unit_of_measurement': '°C'})
|
|
hass.states.async_set('test.hum1', 88,
|
|
attributes={'unit_of_measurement': '%'})
|
|
|
|
return hass.loop.run_until_complete(aiohttp_client(hass.http.app))
|
|
|
|
|
|
async def test_spaceapi_get(hass, mock_client):
|
|
"""Test response after start-up Home Assistant."""
|
|
resp = await mock_client.get(URL_API_SPACEAPI)
|
|
assert resp.status == 200
|
|
|
|
data = await resp.json()
|
|
|
|
assert data['api'] == SPACEAPI_VERSION
|
|
assert data['space'] == 'Home'
|
|
assert data['contact']['email'] == 'hello@home-assistant.io'
|
|
assert data['location']['address'] == 'In your Home'
|
|
assert data['location']['latitude'] == 32.87336
|
|
assert data['location']['longitude'] == -117.22743
|
|
assert data['state']['open'] == 'null'
|
|
assert data['state']['icon']['open'] == \
|
|
'https://home-assistant.io/open.png'
|
|
assert data['state']['icon']['close'] == \
|
|
'https://home-assistant.io/close.png'
|
|
|
|
|
|
async def test_spaceapi_state_get(hass, mock_client):
|
|
"""Test response if the state entity was set."""
|
|
hass.states.async_set('test.test_door', True)
|
|
|
|
resp = await mock_client.get(URL_API_SPACEAPI)
|
|
assert resp.status == 200
|
|
|
|
data = await resp.json()
|
|
assert data['state']['open'] == bool(1)
|
|
|
|
|
|
async def test_spaceapi_sensors_get(hass, mock_client):
|
|
"""Test the response for the sensors."""
|
|
resp = await mock_client.get(URL_API_SPACEAPI)
|
|
assert resp.status == 200
|
|
|
|
data = await resp.json()
|
|
assert data['sensors'] == SENSOR_OUTPUT
|