Migrate to voluptuous (#3142)

🐬
This commit is contained in:
Fabian Affolter 2016-09-02 19:16:42 +02:00 committed by Teagan Glenn
parent a0a509ceea
commit 3bbcf4d8b1
2 changed files with 34 additions and 17 deletions

View File

@ -6,30 +6,39 @@ https://home-assistant.io/components/weblink/
""" """
import logging import logging
import voluptuous as vol
from homeassistant.const import (CONF_NAME, CONF_ICON, CONF_URL)
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
from homeassistant.util import slugify from homeassistant.util import slugify
import homeassistant.helpers.config_validation as cv
DOMAIN = "weblink"
DEPENDENCIES = []
ATTR_NAME = 'name'
ATTR_URL = 'url'
ATTR_ICON = 'icon'
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
CONF_ENTITIES = 'entities'
DOMAIN = 'weblink'
ENTITIES_SCHEMA = vol.Schema({
vol.Required(CONF_URL): cv.url,
vol.Required(CONF_NAME): cv.string,
vol.Optional(CONF_ICON): cv.icon,
})
CONFIG_SCHEMA = vol.Schema({
DOMAIN: vol.Schema({
vol.Required(CONF_ENTITIES): [ENTITIES_SCHEMA],
}),
}, extra=vol.ALLOW_EXTRA)
def setup(hass, config): def setup(hass, config):
"""Setup weblink component.""" """Setup weblink component."""
links = config.get(DOMAIN) links = config.get(DOMAIN)
for link in links.get('entities'): for link in links.get(CONF_ENTITIES):
if ATTR_NAME not in link or ATTR_URL not in link: Link(hass, link.get(CONF_NAME), link.get(CONF_URL),
_LOGGER.error("You need to set both %s and %s to add a %s", link.get(CONF_URL))
ATTR_NAME, ATTR_URL, DOMAIN)
continue
Link(hass, link.get(ATTR_NAME), link.get(ATTR_URL),
link.get(ATTR_ICON))
return True return True

View File

@ -2,6 +2,7 @@
import unittest import unittest
from homeassistant.components import weblink from homeassistant.components import weblink
from homeassistant import bootstrap
from tests.common import get_test_home_assistant from tests.common import get_test_home_assistant
@ -17,16 +18,23 @@ class TestComponentWeblink(unittest.TestCase):
"""Stop everything that was started.""" """Stop everything that was started."""
self.hass.stop() self.hass.stop()
def test_bad_config(self):
"""Test if new entity is created."""
self.assertFalse(bootstrap.setup_component(self.hass, 'weblink', {
'weblink': {
'entities': [{}],
}
}))
def test_entities_get_created(self): def test_entities_get_created(self):
"""Test if new entity is created.""" """Test if new entity is created."""
self.assertTrue(weblink.setup(self.hass, { self.assertTrue(weblink.setup(self.hass, {
weblink.DOMAIN: { weblink.DOMAIN: {
'entities': [ 'entities': [
{ {
weblink.ATTR_NAME: 'My router', weblink.CONF_NAME: 'My router',
weblink.ATTR_URL: 'http://127.0.0.1/' weblink.CONF_URL: 'http://127.0.0.1/'
}, },
{}
] ]
} }
})) }))