mirror of
https://github.com/home-assistant/core.git
synced 2026-07-01 02:55:57 +02:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7825792f2a | |||
| 3cb69dff34 |
@@ -31,7 +31,7 @@ from homeassistant.helpers.trigger_template_entity import (
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from .const import (
|
||||
CONF_ADVANCED_OPTIONS,
|
||||
CONF_ADDITIONAL_OPTIONS,
|
||||
CONF_COLUMN_NAME,
|
||||
CONF_QUERY,
|
||||
DOMAIN,
|
||||
@@ -120,7 +120,7 @@ async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
|
||||
new_options[CONF_COLUMN_NAME] = old_options.get(CONF_COLUMN_NAME)
|
||||
new_options[CONF_QUERY] = old_options.get(CONF_QUERY)
|
||||
new_options[CONF_ADVANCED_OPTIONS] = {}
|
||||
new_options[CONF_ADDITIONAL_OPTIONS] = {}
|
||||
|
||||
for key in (
|
||||
CONF_VALUE_TEMPLATE,
|
||||
@@ -129,12 +129,19 @@ async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
CONF_STATE_CLASS,
|
||||
):
|
||||
if (value := old_options.get(key)) is not None:
|
||||
new_options[CONF_ADVANCED_OPTIONS][key] = value
|
||||
new_options[CONF_ADDITIONAL_OPTIONS][key] = value
|
||||
|
||||
hass.config_entries.async_update_entry(
|
||||
entry, data=new_data, options=new_options, version=2
|
||||
)
|
||||
|
||||
if entry.version == 2:
|
||||
new_options = {**entry.options}
|
||||
# The "advanced_options" section was renamed to "additional_options"
|
||||
if (additional := new_options.pop("advanced_options", None)) is not None:
|
||||
new_options[CONF_ADDITIONAL_OPTIONS] = additional
|
||||
hass.config_entries.async_update_entry(entry, options=new_options, version=3)
|
||||
|
||||
_LOGGER.debug(
|
||||
"Migration to version %s.%s successful",
|
||||
entry.version,
|
||||
|
||||
@@ -32,7 +32,7 @@ from homeassistant.data_entry_flow import section
|
||||
from homeassistant.exceptions import TemplateError
|
||||
from homeassistant.helpers import selector
|
||||
|
||||
from .const import CONF_ADVANCED_OPTIONS, CONF_COLUMN_NAME, CONF_QUERY, DOMAIN
|
||||
from .const import CONF_ADDITIONAL_OPTIONS, CONF_COLUMN_NAME, CONF_QUERY, DOMAIN
|
||||
from .util import (
|
||||
EmptyQueryError,
|
||||
InvalidSqlQuery,
|
||||
@@ -50,7 +50,7 @@ OPTIONS_SCHEMA: vol.Schema = vol.Schema(
|
||||
{
|
||||
vol.Required(CONF_QUERY): selector.TemplateSelector(),
|
||||
vol.Required(CONF_COLUMN_NAME): selector.TextSelector(),
|
||||
vol.Required(CONF_ADVANCED_OPTIONS): section(
|
||||
vol.Required(CONF_ADDITIONAL_OPTIONS): section(
|
||||
vol.Schema(
|
||||
{
|
||||
vol.Optional(CONF_VALUE_TEMPLATE): selector.TemplateSelector(),
|
||||
@@ -164,7 +164,7 @@ def validate_query(db_url: str, query: str, column: str) -> bool:
|
||||
class SQLConfigFlow(ConfigFlow, domain=DOMAIN):
|
||||
"""Handle a config flow for SQL integration."""
|
||||
|
||||
VERSION = 2
|
||||
VERSION = 3
|
||||
|
||||
data: dict[str, Any]
|
||||
|
||||
@@ -239,12 +239,12 @@ class SQLConfigFlow(ConfigFlow, domain=DOMAIN):
|
||||
_LOGGER.debug("Invalid query: %s", err)
|
||||
errors["query"] = "query_invalid"
|
||||
|
||||
mod_advanced_options = {
|
||||
mod_additional_options = {
|
||||
k: v
|
||||
for k, v in user_input[CONF_ADVANCED_OPTIONS].items()
|
||||
for k, v in user_input[CONF_ADDITIONAL_OPTIONS].items()
|
||||
if v is not None
|
||||
}
|
||||
user_input[CONF_ADVANCED_OPTIONS] = mod_advanced_options
|
||||
user_input[CONF_ADDITIONAL_OPTIONS] = mod_additional_options
|
||||
|
||||
if not errors:
|
||||
name = self.data[CONF_NAME]
|
||||
@@ -305,12 +305,12 @@ class SQLOptionsFlowHandler(OptionsFlowWithReload):
|
||||
recorder_db,
|
||||
)
|
||||
|
||||
mod_advanced_options = {
|
||||
mod_additional_options = {
|
||||
k: v
|
||||
for k, v in user_input[CONF_ADVANCED_OPTIONS].items()
|
||||
for k, v in user_input[CONF_ADDITIONAL_OPTIONS].items()
|
||||
if v is not None
|
||||
}
|
||||
user_input[CONF_ADVANCED_OPTIONS] = mod_advanced_options
|
||||
user_input[CONF_ADDITIONAL_OPTIONS] = mod_additional_options
|
||||
|
||||
return self.async_create_entry(
|
||||
data=user_input,
|
||||
|
||||
@@ -9,5 +9,5 @@ PLATFORMS = [Platform.SENSOR]
|
||||
|
||||
CONF_COLUMN_NAME = "column"
|
||||
CONF_QUERY = "query"
|
||||
CONF_ADVANCED_OPTIONS = "advanced_options"
|
||||
CONF_ADDITIONAL_OPTIONS = "additional_options"
|
||||
DB_URL_RE = re.compile("//.*:.*@")
|
||||
|
||||
@@ -36,7 +36,7 @@ from homeassistant.helpers.trigger_template_entity import (
|
||||
)
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
|
||||
from .const import CONF_ADVANCED_OPTIONS, CONF_COLUMN_NAME, CONF_QUERY, DOMAIN
|
||||
from .const import CONF_ADDITIONAL_OPTIONS, CONF_COLUMN_NAME, CONF_QUERY, DOMAIN
|
||||
from .util import (
|
||||
InvalidSqlQuery,
|
||||
async_create_sessionmaker,
|
||||
@@ -115,7 +115,9 @@ async def async_setup_entry(
|
||||
db_url: str = resolve_db_url(hass, entry.data.get(CONF_DB_URL))
|
||||
name: str = entry.title
|
||||
query_str: str = entry.options[CONF_QUERY]
|
||||
template: str | None = entry.options[CONF_ADVANCED_OPTIONS].get(CONF_VALUE_TEMPLATE)
|
||||
template: str | None = entry.options[CONF_ADDITIONAL_OPTIONS].get(
|
||||
CONF_VALUE_TEMPLATE
|
||||
)
|
||||
column_name: str = entry.options[CONF_COLUMN_NAME]
|
||||
|
||||
query_template: ValueTemplate | None = None
|
||||
@@ -136,9 +138,9 @@ async def async_setup_entry(
|
||||
name_template = Template(name, hass)
|
||||
trigger_entity_config = {CONF_NAME: name_template, CONF_UNIQUE_ID: entry.entry_id}
|
||||
for key in TRIGGER_ENTITY_OPTIONS:
|
||||
if key not in entry.options[CONF_ADVANCED_OPTIONS]:
|
||||
if key not in entry.options[CONF_ADDITIONAL_OPTIONS]:
|
||||
continue
|
||||
trigger_entity_config[key] = entry.options[CONF_ADVANCED_OPTIONS][key]
|
||||
trigger_entity_config[key] = entry.options[CONF_ADDITIONAL_OPTIONS][key]
|
||||
|
||||
await async_setup_sensor(
|
||||
hass,
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"query": "Query to run, needs to start with 'SELECT'"
|
||||
},
|
||||
"sections": {
|
||||
"advanced_options": {
|
||||
"additional_options": {
|
||||
"data": {
|
||||
"device_class": "Device class",
|
||||
"state_class": "State class",
|
||||
@@ -87,21 +87,21 @@
|
||||
"query": "[%key:component::sql::config::step::options::data_description::query%]"
|
||||
},
|
||||
"sections": {
|
||||
"advanced_options": {
|
||||
"additional_options": {
|
||||
"data": {
|
||||
"device_class": "[%key:component::sql::config::step::options::sections::advanced_options::data::device_class%]",
|
||||
"state_class": "[%key:component::sql::config::step::options::sections::advanced_options::data::state_class%]",
|
||||
"unit_of_measurement": "[%key:component::sql::config::step::options::sections::advanced_options::data::unit_of_measurement%]",
|
||||
"value_template": "[%key:component::sql::config::step::options::sections::advanced_options::data::value_template%]"
|
||||
"device_class": "[%key:component::sql::config::step::options::sections::additional_options::data::device_class%]",
|
||||
"state_class": "[%key:component::sql::config::step::options::sections::additional_options::data::state_class%]",
|
||||
"unit_of_measurement": "[%key:component::sql::config::step::options::sections::additional_options::data::unit_of_measurement%]",
|
||||
"value_template": "[%key:component::sql::config::step::options::sections::additional_options::data::value_template%]"
|
||||
},
|
||||
"data_description": {
|
||||
"device_class": "[%key:component::sql::config::step::options::sections::advanced_options::data_description::device_class%]",
|
||||
"state_class": "[%key:component::sql::config::step::options::sections::advanced_options::data_description::state_class%]",
|
||||
"unit_of_measurement": "[%key:component::sql::config::step::options::sections::advanced_options::data_description::unit_of_measurement%]",
|
||||
"value_template": "[%key:component::sql::config::step::options::sections::advanced_options::data_description::value_template%]"
|
||||
"device_class": "[%key:component::sql::config::step::options::sections::additional_options::data_description::device_class%]",
|
||||
"state_class": "[%key:component::sql::config::step::options::sections::additional_options::data_description::state_class%]",
|
||||
"unit_of_measurement": "[%key:component::sql::config::step::options::sections::additional_options::data_description::unit_of_measurement%]",
|
||||
"value_template": "[%key:component::sql::config::step::options::sections::additional_options::data_description::value_template%]"
|
||||
},
|
||||
"description": "[%key:component::sql::config::step::options::sections::advanced_options::name%]",
|
||||
"name": "[%key:component::sql::config::step::options::sections::advanced_options::name%]"
|
||||
"description": "[%key:component::sql::config::step::options::sections::additional_options::name%]",
|
||||
"name": "[%key:component::sql::config::step::options::sections::additional_options::name%]"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ from homeassistant.components.sensor import (
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.components.sql.const import (
|
||||
CONF_ADVANCED_OPTIONS,
|
||||
CONF_ADDITIONAL_OPTIONS,
|
||||
CONF_COLUMN_NAME,
|
||||
CONF_QUERY,
|
||||
DOMAIN,
|
||||
@@ -35,7 +35,7 @@ from tests.common import MockConfigEntry
|
||||
ENTRY_CONFIG = {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.TOTAL,
|
||||
@@ -46,7 +46,7 @@ ENTRY_CONFIG_BLANK_QUERY = {
|
||||
CONF_NAME: "Get Value",
|
||||
CONF_QUERY: " ",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.TOTAL,
|
||||
@@ -56,7 +56,7 @@ ENTRY_CONFIG_BLANK_QUERY = {
|
||||
ENTRY_CONFIG_WITH_VALUE_TEMPLATE = {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_VALUE_TEMPLATE: "{{ value }}",
|
||||
},
|
||||
@@ -68,7 +68,7 @@ ENTRY_CONFIG_WITH_QUERY_TEMPLATE = {
|
||||
" 5 {% else %} 6 {% endif %} as value"
|
||||
),
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_VALUE_TEMPLATE: "{{ value }}",
|
||||
},
|
||||
@@ -77,7 +77,7 @@ ENTRY_CONFIG_WITH_QUERY_TEMPLATE = {
|
||||
ENTRY_CONFIG_WITH_BROKEN_QUERY_TEMPLATE = {
|
||||
CONF_QUERY: "SELECT {{ 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_VALUE_TEMPLATE: "{{ value }}",
|
||||
},
|
||||
@@ -86,7 +86,7 @@ ENTRY_CONFIG_WITH_BROKEN_QUERY_TEMPLATE = {
|
||||
ENTRY_CONFIG_WITH_BROKEN_QUERY_TEMPLATE_OPT = {
|
||||
CONF_QUERY: "SELECT {{ 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_VALUE_TEMPLATE: "{{ value }}",
|
||||
},
|
||||
@@ -95,7 +95,7 @@ ENTRY_CONFIG_WITH_BROKEN_QUERY_TEMPLATE_OPT = {
|
||||
ENTRY_CONFIG_INVALID_QUERY = {
|
||||
CONF_QUERY: "SELECT 5 FROM as value",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -104,7 +104,7 @@ ENTRY_CONFIG_INVALID_QUERY = {
|
||||
ENTRY_CONFIG_INVALID_QUERY_2 = {
|
||||
CONF_QUERY: "SELECT5 FROM as value",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -113,7 +113,7 @@ ENTRY_CONFIG_INVALID_QUERY_2 = {
|
||||
ENTRY_CONFIG_INVALID_QUERY_3 = {
|
||||
CONF_QUERY: ";;",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -122,7 +122,7 @@ ENTRY_CONFIG_INVALID_QUERY_3 = {
|
||||
ENTRY_CONFIG_INVALID_QUERY_OPT = {
|
||||
CONF_QUERY: "SELECT 5 FROM as value",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -131,7 +131,7 @@ ENTRY_CONFIG_INVALID_QUERY_OPT = {
|
||||
ENTRY_CONFIG_INVALID_QUERY_2_OPT = {
|
||||
CONF_QUERY: "SELECT5 FROM as value",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -140,7 +140,7 @@ ENTRY_CONFIG_INVALID_QUERY_2_OPT = {
|
||||
ENTRY_CONFIG_INVALID_QUERY_3_OPT = {
|
||||
CONF_QUERY: ";;",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -152,7 +152,7 @@ ENTRY_CONFIG_QUERY_READ_ONLY_CTE = {
|
||||
" SELECT state FROM test WHERE row_num = 1 LIMIT 1;"
|
||||
),
|
||||
CONF_COLUMN_NAME: "state",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -160,7 +160,7 @@ ENTRY_CONFIG_QUERY_READ_ONLY_CTE = {
|
||||
ENTRY_CONFIG_QUERY_NO_READ_ONLY = {
|
||||
CONF_QUERY: "UPDATE states SET state = 999999 WHERE state_id = 11125",
|
||||
CONF_COLUMN_NAME: "state",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -171,7 +171,7 @@ ENTRY_CONFIG_QUERY_NO_READ_ONLY_CTE = {
|
||||
" UPDATE states SET states.state = test.state;"
|
||||
),
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -182,7 +182,7 @@ ENTRY_CONFIG_QUERY_READ_ONLY_CTE_OPT = {
|
||||
" SELECT state FROM test WHERE row_num = 1 LIMIT 1;"
|
||||
),
|
||||
CONF_COLUMN_NAME: "state",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -190,7 +190,7 @@ ENTRY_CONFIG_QUERY_READ_ONLY_CTE_OPT = {
|
||||
ENTRY_CONFIG_QUERY_NO_READ_ONLY_OPT = {
|
||||
CONF_QUERY: "UPDATE 5 as value",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -201,7 +201,7 @@ ENTRY_CONFIG_QUERY_NO_READ_ONLY_CTE_OPT = {
|
||||
" UPDATE states SET states.state = test.state;"
|
||||
),
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -210,7 +210,7 @@ ENTRY_CONFIG_QUERY_NO_READ_ONLY_CTE_OPT = {
|
||||
ENTRY_CONFIG_MULTIPLE_QUERIES = {
|
||||
CONF_QUERY: "SELECT 5 as state; UPDATE states SET state = 10;",
|
||||
CONF_COLUMN_NAME: "state",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -219,7 +219,7 @@ ENTRY_CONFIG_MULTIPLE_QUERIES = {
|
||||
ENTRY_CONFIG_MULTIPLE_QUERIES_OPT = {
|
||||
CONF_QUERY: "SELECT 5 as state; UPDATE states SET state = 10;",
|
||||
CONF_COLUMN_NAME: "state",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -228,7 +228,7 @@ ENTRY_CONFIG_MULTIPLE_QUERIES_OPT = {
|
||||
ENTRY_CONFIG_INVALID_COLUMN_NAME = {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -236,7 +236,7 @@ ENTRY_CONFIG_INVALID_COLUMN_NAME = {
|
||||
ENTRY_CONFIG_INVALID_COLUMN_NAME_OPT = {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -244,7 +244,7 @@ ENTRY_CONFIG_INVALID_COLUMN_NAME_OPT = {
|
||||
ENTRY_CONFIG_NO_RESULTS = {
|
||||
CONF_QUERY: "SELECT kalle as value from no_table;",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -365,8 +365,8 @@ async def init_integration(
|
||||
"""Set up the SQL integration in Home Assistant."""
|
||||
if not options:
|
||||
options = ENTRY_CONFIG
|
||||
if CONF_ADVANCED_OPTIONS not in options:
|
||||
options[CONF_ADVANCED_OPTIONS] = {}
|
||||
if CONF_ADDITIONAL_OPTIONS not in options:
|
||||
options[CONF_ADDITIONAL_OPTIONS] = {}
|
||||
|
||||
config_entry = MockConfigEntry(
|
||||
title=title,
|
||||
|
||||
@@ -16,7 +16,7 @@ from homeassistant.components.sensor import (
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.components.sql.const import (
|
||||
CONF_ADVANCED_OPTIONS,
|
||||
CONF_ADDITIONAL_OPTIONS,
|
||||
CONF_COLUMN_NAME,
|
||||
CONF_QUERY,
|
||||
DOMAIN,
|
||||
@@ -100,7 +100,7 @@ async def test_form_simple(
|
||||
assert result["options"] == {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.TOTAL,
|
||||
@@ -141,7 +141,7 @@ async def test_form_with_query_template(
|
||||
" 5 {% else %} 6 {% endif %} as value"
|
||||
),
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_VALUE_TEMPLATE: "{{ value }}",
|
||||
},
|
||||
@@ -188,7 +188,7 @@ async def test_form_with_broken_query_template(
|
||||
" 5 {% else %} 6 {% endif %} as value"
|
||||
),
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_VALUE_TEMPLATE: "{{ value }}",
|
||||
},
|
||||
@@ -225,7 +225,7 @@ async def test_form_with_value_template(
|
||||
assert result["options"] == {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_VALUE_TEMPLATE: "{{ value }}",
|
||||
},
|
||||
@@ -348,7 +348,7 @@ async def test_flow_fails_invalid_query(hass: HomeAssistant) -> None:
|
||||
assert result["options"] == {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.TOTAL,
|
||||
@@ -391,7 +391,7 @@ async def test_flow_fails_invalid_column_name(hass: HomeAssistant) -> None:
|
||||
assert result["options"] == {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.TOTAL,
|
||||
@@ -407,7 +407,7 @@ async def test_options_flow(hass: HomeAssistant) -> None:
|
||||
options={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.TOTAL,
|
||||
@@ -430,7 +430,7 @@ async def test_options_flow(hass: HomeAssistant) -> None:
|
||||
user_input={
|
||||
CONF_QUERY: "SELECT 5 as size",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_VALUE_TEMPLATE: "{{ value }}",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
@@ -443,7 +443,7 @@ async def test_options_flow(hass: HomeAssistant) -> None:
|
||||
assert result["data"] == {
|
||||
CONF_QUERY: "SELECT 5 as size",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_VALUE_TEMPLATE: "{{ value }}",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
@@ -460,7 +460,7 @@ async def test_options_flow_name_previously_removed(hass: HomeAssistant) -> None
|
||||
options={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -482,7 +482,7 @@ async def test_options_flow_name_previously_removed(hass: HomeAssistant) -> None
|
||||
user_input={
|
||||
CONF_QUERY: "SELECT 5 as size",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -493,7 +493,7 @@ async def test_options_flow_name_previously_removed(hass: HomeAssistant) -> None
|
||||
assert result["data"] == {
|
||||
CONF_QUERY: "SELECT 5 as size",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -507,7 +507,7 @@ async def test_options_flow_fails_db_url(hass: HomeAssistant) -> None:
|
||||
options={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -529,7 +529,7 @@ async def test_options_flow_fails_db_url(hass: HomeAssistant) -> None:
|
||||
user_input={
|
||||
CONF_QUERY: "SELECT 5 as size",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -546,7 +546,7 @@ async def test_options_flow_fails_invalid_query(hass: HomeAssistant) -> None:
|
||||
options={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -630,7 +630,7 @@ async def test_options_flow_fails_invalid_query(hass: HomeAssistant) -> None:
|
||||
user_input={
|
||||
CONF_QUERY: "SELECT 5 as size",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -640,7 +640,7 @@ async def test_options_flow_fails_invalid_query(hass: HomeAssistant) -> None:
|
||||
assert result["data"] == {
|
||||
CONF_QUERY: "SELECT 5 as size",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -654,7 +654,7 @@ async def test_options_flow_fails_invalid_column_name(hass: HomeAssistant) -> No
|
||||
options={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -682,7 +682,7 @@ async def test_options_flow_fails_invalid_column_name(hass: HomeAssistant) -> No
|
||||
user_input={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -692,7 +692,7 @@ async def test_options_flow_fails_invalid_column_name(hass: HomeAssistant) -> No
|
||||
assert result["data"] == {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -706,7 +706,7 @@ async def test_options_flow_db_url_empty(hass: HomeAssistant) -> None:
|
||||
options={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -727,7 +727,7 @@ async def test_options_flow_db_url_empty(hass: HomeAssistant) -> None:
|
||||
user_input={
|
||||
CONF_QUERY: "SELECT 5 as size",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -738,7 +738,7 @@ async def test_options_flow_db_url_empty(hass: HomeAssistant) -> None:
|
||||
assert result["data"] == {
|
||||
CONF_QUERY: "SELECT 5 as size",
|
||||
CONF_COLUMN_NAME: "size",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -770,7 +770,7 @@ async def test_full_flow_not_recorder_db(
|
||||
{
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {},
|
||||
CONF_ADDITIONAL_OPTIONS: {},
|
||||
},
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
@@ -781,7 +781,7 @@ async def test_full_flow_not_recorder_db(
|
||||
assert result["options"] == {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {},
|
||||
CONF_ADDITIONAL_OPTIONS: {},
|
||||
}
|
||||
|
||||
entry = hass.config_entries.async_entries(DOMAIN)[0]
|
||||
@@ -796,7 +796,7 @@ async def test_full_flow_not_recorder_db(
|
||||
user_input={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -807,7 +807,7 @@ async def test_full_flow_not_recorder_db(
|
||||
assert result["data"] == {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
@@ -822,7 +822,7 @@ async def test_device_state_class(hass: HomeAssistant) -> None:
|
||||
options={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -839,7 +839,7 @@ async def test_device_state_class(hass: HomeAssistant) -> None:
|
||||
user_input={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.TOTAL,
|
||||
@@ -852,7 +852,7 @@ async def test_device_state_class(hass: HomeAssistant) -> None:
|
||||
assert result["data"] == {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.TOTAL,
|
||||
@@ -868,7 +868,7 @@ async def test_device_state_class(hass: HomeAssistant) -> None:
|
||||
user_input={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
@@ -881,7 +881,7 @@ async def test_device_state_class(hass: HomeAssistant) -> None:
|
||||
assert result["data"] == {
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ from homeassistant.components.sensor import (
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.components.sql.const import (
|
||||
CONF_ADVANCED_OPTIONS,
|
||||
CONF_ADDITIONAL_OPTIONS,
|
||||
CONF_COLUMN_NAME,
|
||||
CONF_QUERY,
|
||||
DOMAIN,
|
||||
@@ -122,10 +122,10 @@ async def test_migration_from_future(
|
||||
options={
|
||||
CONF_QUERY: "SELECT 5.01 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {},
|
||||
CONF_ADDITIONAL_OPTIONS: {},
|
||||
},
|
||||
entry_id="1",
|
||||
version=3,
|
||||
version=4,
|
||||
)
|
||||
|
||||
config_entry.add_to_hass(hass)
|
||||
@@ -135,10 +135,10 @@ async def test_migration_from_future(
|
||||
assert config_entry.state is ConfigEntryState.MIGRATION_ERROR
|
||||
|
||||
|
||||
async def test_migration_from_v1_to_v2(
|
||||
async def test_migration_from_v1_to_v3(
|
||||
recorder_mock: Recorder, hass: HomeAssistant
|
||||
) -> None:
|
||||
"""Test migration from version 1 to 2."""
|
||||
"""Test migration from version 1 to 3."""
|
||||
config_entry = MockConfigEntry(
|
||||
title="Test migration",
|
||||
domain=DOMAIN,
|
||||
@@ -163,12 +163,60 @@ async def test_migration_from_v1_to_v2(
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert config_entry.state is ConfigEntryState.LOADED
|
||||
assert config_entry.version == 3
|
||||
|
||||
assert config_entry.data == {}
|
||||
assert config_entry.options == {
|
||||
CONF_QUERY: "SELECT 5.01 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_VALUE_TEMPLATE: "{{ value | int }}",
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.MEASUREMENT,
|
||||
},
|
||||
}
|
||||
|
||||
state = hass.states.get("sensor.test_migration")
|
||||
assert state.state == "5"
|
||||
|
||||
|
||||
async def test_migration_from_v2_to_v3(
|
||||
recorder_mock: Recorder, hass: HomeAssistant
|
||||
) -> None:
|
||||
"""Test migration from version 2 to 3 renames the options section."""
|
||||
config_entry = MockConfigEntry(
|
||||
title="Test migration",
|
||||
domain=DOMAIN,
|
||||
source=SOURCE_USER,
|
||||
data={},
|
||||
options={
|
||||
CONF_QUERY: "SELECT 5.01 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
"advanced_options": {
|
||||
CONF_VALUE_TEMPLATE: "{{ value | int }}",
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.MEASUREMENT,
|
||||
},
|
||||
},
|
||||
entry_id="1",
|
||||
version=2,
|
||||
minor_version=1,
|
||||
)
|
||||
|
||||
config_entry.add_to_hass(hass)
|
||||
await hass.config_entries.async_setup(config_entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert config_entry.state is ConfigEntryState.LOADED
|
||||
assert config_entry.version == 3
|
||||
|
||||
assert "advanced_options" not in config_entry.options
|
||||
assert config_entry.options == {
|
||||
CONF_QUERY: "SELECT 5.01 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_VALUE_TEMPLATE: "{{ value | int }}",
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
|
||||
@@ -18,7 +18,7 @@ from homeassistant.components.sensor import (
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.components.sql.const import (
|
||||
CONF_ADVANCED_OPTIONS,
|
||||
CONF_ADDITIONAL_OPTIONS,
|
||||
CONF_COLUMN_NAME,
|
||||
CONF_QUERY,
|
||||
DOMAIN,
|
||||
@@ -94,7 +94,7 @@ async def test_query_value_template(
|
||||
options = {
|
||||
CONF_QUERY: "SELECT 5.01 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_VALUE_TEMPLATE: "{{ value | int }}",
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
@@ -126,7 +126,7 @@ async def test_template_query(
|
||||
" 5 {% else %} 6 {% endif %} as value"
|
||||
),
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_VALUE_TEMPLATE: "{{ value | int }}",
|
||||
},
|
||||
}
|
||||
@@ -168,7 +168,7 @@ async def test_broken_template_query(
|
||||
options = {
|
||||
CONF_QUERY: "SELECT {{ 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_VALUE_TEMPLATE: "{{ value | int }}",
|
||||
},
|
||||
}
|
||||
@@ -672,7 +672,7 @@ async def test_attributes_from_entry_config(
|
||||
options={
|
||||
CONF_QUERY: "SELECT 5 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
CONF_DEVICE_CLASS: SensorDeviceClass.DATA_SIZE,
|
||||
CONF_STATE_CLASS: SensorStateClass.TOTAL,
|
||||
@@ -694,7 +694,7 @@ async def test_attributes_from_entry_config(
|
||||
options={
|
||||
CONF_QUERY: "SELECT 6 as value",
|
||||
CONF_COLUMN_NAME: "value",
|
||||
CONF_ADVANCED_OPTIONS: {
|
||||
CONF_ADDITIONAL_OPTIONS: {
|
||||
CONF_UNIT_OF_MEASUREMENT: "MiB",
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user