Skip to content

Commit 56b7d17

Browse files
committed
Add test_sensor.test_async_session_rollback_on_error
Signed-off-by: David Rapan <[email protected]>
1 parent f772f6c commit 56b7d17

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

tests/components/sql/test_sensor.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,47 @@ async def test_session_rollback_on_error(
692692
assert mock_session_rollback.call_count == 1
693693

694694

695+
async def test_async_session_rollback_on_error(
696+
recorder_mock: Recorder,
697+
hass: HomeAssistant,
698+
freezer: FrozenDateTimeFactory,
699+
caplog: pytest.LogCaptureFixture,
700+
) -> None:
701+
"""Test the SQL sensor."""
702+
config = {CONF_DB_URL: "sqlite+aiosqlite:///"}
703+
options = {
704+
CONF_QUERY: "SELECT 5 as value",
705+
CONF_COLUMN_NAME: "value",
706+
CONF_UNIQUE_ID: "very_unique_id",
707+
}
708+
await init_integration(
709+
hass, title="Select value SQL query", config=config, options=options
710+
)
711+
platforms = async_get_platforms(hass, "sql")
712+
sql_entity = platforms[0].entities["sensor.select_value_sql_query"]
713+
714+
state = hass.states.get("sensor.select_value_sql_query")
715+
assert state.state == "5"
716+
assert state.attributes["value"] == 5
717+
718+
with (
719+
patch.object(
720+
sql_entity,
721+
"_lambda_stmt",
722+
generate_lambda_stmt("Faulty syntax create operational issue"),
723+
),
724+
patch(
725+
"sqlalchemy.ext.asyncio.session.AsyncSession.rollback"
726+
) as mock_async_session_rollback,
727+
):
728+
freezer.tick(timedelta(minutes=1))
729+
async_fire_time_changed(hass)
730+
await hass.async_block_till_done(wait_background_tasks=True)
731+
assert "sqlite3.OperationalError" in caplog.text
732+
733+
assert mock_async_session_rollback.call_count == 1
734+
735+
695736
async def test_query_recover_from_rollback(
696737
recorder_mock: Recorder,
697738
hass: HomeAssistant,

0 commit comments

Comments
 (0)