Even more simplified API

This commit is contained in:
Paulus Schoutsen 2014-10-19 23:37:43 -07:00
parent 7c17987585
commit 58c90402c5
3 changed files with 54 additions and 18 deletions

View File

@ -241,25 +241,37 @@ Returns message if API is up and running.
Returns a dict with as keys the events and as value the number of listeners.
```json
{
"state_changed": 5,
"time_changed": 2
}
[
{
"event": "state_changed",
"listener_count": 5
},
{
"event": "time_changed",
"listener_count": 2
}
]
```
**/api/services - GET**<br>
Returns a dict with as keys the domain and as value a list of published services.
```json
{
"browser": [
[
{
"domain": "browser",
"services": [
"browse_url"
],
"keyboard": [
]
},
{
"domain": "keyboard",
"services": [
"volume_up",
"volume_down"
]
}
]
}
]
```
**/api/states - GET**<br>

View File

@ -402,7 +402,10 @@ def is_state(api, entity_id, state, logger=None):
def get_services(api, logger=None):
""" Returns a dict with per domain the available services at API. """
"""
Returns a list of dicts. Each dict has a string "domain" and
a list of strings "services".
"""
try:
req = api(METHOD_GET, URL_API_SERVICES)

View File

@ -245,14 +245,25 @@ class TestHTTP(unittest.TestCase):
req = requests.get(_url(remote.URL_API_EVENTS),
headers=HA_HEADERS)
self.assertEqual(req.json(), self.hass.bus.listeners)
local = self.hass.bus.listeners
for event in req.json():
self.assertEqual(event["listener_count"],
local.pop(event["event"]))
self.assertEqual(len(local), 0)
def test_api_get_services(self):
""" Test if we can get a dict describing current services. """
req = requests.get(_url(remote.URL_API_SERVICES),
headers=HA_HEADERS)
self.assertEqual(req.json(), self.hass.services.services)
local_services = self.hass.services.services
for serv_domain in req.json():
local = local_services.pop(serv_domain["domain"])
self.assertEqual(serv_domain["services"], local)
def test_api_call_service_no_data(self):
""" Test if the API allows us to call a service. """
@ -310,9 +321,13 @@ class TestRemoteMethods(unittest.TestCase):
def test_get_event_listeners(self):
""" Test Python API get_event_listeners. """
local = self.hass.bus.listeners
self.assertEqual(
remote.get_event_listeners(self.api), self.hass.bus.listeners)
for event in remote.get_event_listeners(self.api):
self.assertEqual(event["listener_count"],
local.pop(event["event"]))
self.assertEqual(len(local), 0)
def test_fire_event(self):
""" Test Python API fire_event. """
@ -360,8 +375,12 @@ class TestRemoteMethods(unittest.TestCase):
def test_get_services(self):
""" Test Python API get_services. """
self.assertEqual(
remote.get_services(self.api), self.hass.services.services)
local_services = self.hass.services.services
for serv_domain in remote.get_services(self.api):
local = local_services.pop(serv_domain["domain"])
self.assertEqual(serv_domain["services"], local)
def test_call_service(self):
""" Test Python API call_service. """
@ -392,7 +411,9 @@ class TestRemoteClasses(unittest.TestCase):
def test_statemachine_init(self):
""" Tests if remote.StateMachine copies all states on init. """
self.assertEqual(self.hass.states.all(), self.slave.states.all())
for state in self.hass.states.all():
self.assertEqual(
self.slave.states.get(state.entity_id), state)
def test_statemachine_set(self):
""" Tests if setting the state on a slave is recorded. """