mirror of
https://github.com/Electric-Special/ha-core.git
synced 2026-03-21 03:03:17 +01:00
Add SQL services test for rollback on error (#155607)
Co-authored-by: J. Diego Rodríguez Royo <jdrr1998@hotmail.com>
This commit is contained in:
@@ -13,6 +13,7 @@ from voluptuous import MultipleInvalid
|
||||
from homeassistant.components.recorder import Recorder
|
||||
from homeassistant.components.sql.const import DOMAIN
|
||||
from homeassistant.components.sql.services import SERVICE_QUERY
|
||||
from homeassistant.components.sql.util import generate_lambda_stmt
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import ServiceValidationError
|
||||
from homeassistant.setup import async_setup_component
|
||||
@@ -86,6 +87,35 @@ async def test_query_service_external_db(hass: HomeAssistant, tmp_path: Path) ->
|
||||
}
|
||||
|
||||
|
||||
async def test_query_service_rollback_on_error(hass: HomeAssistant) -> None:
|
||||
"""Test the query service."""
|
||||
await async_setup_component(hass, DOMAIN, {})
|
||||
await hass.async_block_till_done()
|
||||
|
||||
with (
|
||||
patch(
|
||||
"homeassistant.components.sql.services.generate_lambda_stmt",
|
||||
return_value=generate_lambda_stmt("Faulty syntax create operational issue"),
|
||||
),
|
||||
pytest.raises(
|
||||
ServiceValidationError, match="An error occurred when executing the query"
|
||||
),
|
||||
patch("sqlalchemy.orm.session.Session.rollback") as mock_session_rollback,
|
||||
):
|
||||
await hass.services.async_call(
|
||||
DOMAIN,
|
||||
SERVICE_QUERY,
|
||||
{
|
||||
"query": "SELECT name, age FROM users ORDER BY age",
|
||||
"db_url": "sqlite:///",
|
||||
},
|
||||
blocking=True,
|
||||
return_response=True,
|
||||
)
|
||||
|
||||
mock_session_rollback.assert_called_once()
|
||||
|
||||
|
||||
async def test_query_service_data_conversion(
|
||||
hass: HomeAssistant, tmp_path: Path
|
||||
) -> None:
|
||||
|
||||
Reference in New Issue
Block a user