Preserve customize glob order. (#6963)

* Preserve customize glob order.

* add tests
pull/6956/head
Andrey 2017-04-07 08:39:35 +03:00 committed by Paulus Schoutsen
parent 69dee168a1
commit 5d1dbd61b2
4 changed files with 24 additions and 2 deletions

View File

@ -124,7 +124,7 @@ CONFIG_SCHEMA = vol.Schema({
vol.Optional(CONF_DEVICE_CONFIG, default={}):
vol.Schema({cv.entity_id: DEVICE_CONFIG_SCHEMA_ENTRY}),
vol.Optional(CONF_DEVICE_CONFIG_GLOB, default={}):
vol.Schema({cv.string: DEVICE_CONFIG_SCHEMA_ENTRY}),
cv.ordered_dict(DEVICE_CONFIG_SCHEMA_ENTRY, cv.string),
vol.Optional(CONF_DEVICE_CONFIG_DOMAIN, default={}):
vol.Schema({cv.string: DEVICE_CONFIG_SCHEMA_ENTRY}),
vol.Optional(CONF_DEBUG, default=DEFAULT_DEBUG): cv.boolean,

View File

@ -108,7 +108,7 @@ CUSTOMIZE_CONFIG_SCHEMA = vol.Schema({
vol.Optional(CONF_CUSTOMIZE_DOMAIN, default={}):
vol.Schema({cv.string: dict}),
vol.Optional(CONF_CUSTOMIZE_GLOB, default={}):
vol.Schema({cv.string: dict}),
cv.ordered_dict(OrderedDict, cv.string),
})
CORE_CONFIG_SCHEMA = CUSTOMIZE_CONFIG_SCHEMA.extend({

View File

@ -1,7 +1,11 @@
"""Tests for the Z-Wave init."""
import asyncio
import unittest
from collections import OrderedDict
from homeassistant.bootstrap import async_setup_component
from homeassistant.components.zwave import (
CONFIG_SCHEMA, CONF_DEVICE_CONFIG_GLOB)
@asyncio.coroutine
@ -34,3 +38,14 @@ def test_invalid_device_config(hass, mock_openzwave):
}})
assert not result
class TestZwave(unittest.TestCase):
"""Test zwave init."""
def test_device_config_glob_is_ordered(self):
"""Test that device_config_glob preserves order."""
conf = CONFIG_SCHEMA(
{'zwave': {CONF_DEVICE_CONFIG_GLOB: OrderedDict()}})
self.assertIsInstance(
conf['zwave'][CONF_DEVICE_CONFIG_GLOB], OrderedDict)

View File

@ -3,6 +3,7 @@
import os
import unittest
import unittest.mock as mock
from collections import OrderedDict
import pytest
from voluptuous import MultipleInvalid
@ -205,6 +206,12 @@ class TestConfig(unittest.TestCase):
},
})
def test_customize_glob_is_ordered(self):
"""Test that customize_glob preserves order."""
conf = config_util.CORE_CONFIG_SCHEMA(
{'customize_glob': OrderedDict()})
self.assertIsInstance(conf['customize_glob'], OrderedDict)
def _compute_state(self, config):
run_coroutine_threadsafe(
config_util.async_process_ha_core_config(self.hass, config),