Fix db_url issue in SQL (#92324)

* db_url fix

* Add test

* assert entry.options
This commit is contained in:
G Johansson
2023-05-01 16:17:01 +02:00
committed by GitHub
parent 7b5d26d3fa
commit 9795699669
5 changed files with 145 additions and 20 deletions
+105
View File
@@ -464,3 +464,108 @@ async def test_options_flow_db_url_empty(
"column": "size",
"unit_of_measurement": "MiB",
}
async def test_full_flow_not_recorder_db(
recorder_mock: Recorder, hass: HomeAssistant
) -> None:
"""Test full config flow with not using recorder db."""
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER}
)
assert result["type"] == FlowResultType.FORM
assert result["errors"] == {}
with patch(
"homeassistant.components.sql.async_setup_entry",
return_value=True,
), patch(
"homeassistant.components.sql.config_flow.sqlalchemy.create_engine",
):
result2 = await hass.config_entries.flow.async_configure(
result["flow_id"],
{
"db_url": "sqlite://path/to/db.db",
"name": "Get Value",
"query": "SELECT 5 as value",
"column": "value",
},
)
await hass.async_block_till_done()
assert result2["type"] == FlowResultType.CREATE_ENTRY
assert result2["title"] == "Get Value"
assert result2["options"] == {
"name": "Get Value",
"db_url": "sqlite://path/to/db.db",
"query": "SELECT 5 as value",
"column": "value",
"unit_of_measurement": None,
"value_template": None,
}
entry = hass.config_entries.async_entries(DOMAIN)[0]
result = await hass.config_entries.options.async_init(entry.entry_id)
assert result["type"] == FlowResultType.FORM
assert result["step_id"] == "init"
with patch(
"homeassistant.components.sql.async_setup_entry",
return_value=True,
), patch(
"homeassistant.components.sql.config_flow.sqlalchemy.create_engine",
):
result = await hass.config_entries.options.async_configure(
result["flow_id"],
user_input={
"query": "SELECT 5 as value",
"db_url": "sqlite://path/to/db.db",
"column": "value",
"unit_of_measurement": "MiB",
},
)
await hass.async_block_till_done()
assert result["type"] == FlowResultType.CREATE_ENTRY
assert result["data"] == {
"name": "Get Value",
"db_url": "sqlite://path/to/db.db",
"query": "SELECT 5 as value",
"column": "value",
"unit_of_measurement": "MiB",
}
# Need to test same again to mitigate issue with db_url removal
result = await hass.config_entries.options.async_init(entry.entry_id)
with patch(
"homeassistant.components.sql.config_flow.sqlalchemy.create_engine",
):
result = await hass.config_entries.options.async_configure(
result["flow_id"],
user_input={
"query": "SELECT 5 as value",
"db_url": "sqlite://path/to/db.db",
"column": "value",
"unit_of_measurement": "MB",
},
)
await hass.async_block_till_done()
assert result["type"] == FlowResultType.CREATE_ENTRY
assert result["data"] == {
"name": "Get Value",
"db_url": "sqlite://path/to/db.db",
"query": "SELECT 5 as value",
"column": "value",
"unit_of_measurement": "MB",
}
assert entry.options == {
"name": "Get Value",
"db_url": "sqlite://path/to/db.db",
"query": "SELECT 5 as value",
"column": "value",
"unit_of_measurement": "MB",
}