Skip to content

Commit 865c0e9

Browse files
committed
Merge test_sensor.test_session_rollback_on_error
Signed-off-by: David Rapan <[email protected]>
1 parent b5f8758 commit 865c0e9

File tree

1 file changed

+17
-41
lines changed

1 file changed

+17
-41
lines changed

tests/components/sql/test_sensor.py

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -759,50 +759,28 @@ async def test_attributes_from_entry_config(
759759
assert CONF_STATE_CLASS not in state.attributes
760760

761761

762-
async def test_session_rollback_on_error(
763-
recorder_mock: Recorder,
764-
hass: HomeAssistant,
765-
freezer: FrozenDateTimeFactory,
766-
caplog: pytest.LogCaptureFixture,
767-
) -> None:
768-
"""Test the SQL sensor."""
769-
options = {
770-
CONF_QUERY: "SELECT 5 as value",
771-
CONF_COLUMN_NAME: "value",
772-
CONF_UNIQUE_ID: "very_unique_id",
773-
}
774-
await init_integration(hass, title="Select value SQL query", options=options)
775-
platforms = async_get_platforms(hass, "sql")
776-
sql_entity = platforms[0].entities["sensor.select_value_sql_query"]
777-
778-
state = hass.states.get("sensor.select_value_sql_query")
779-
assert state.state == "5"
780-
assert state.attributes["value"] == 5
781-
782-
with (
783-
patch.object(
784-
sql_entity,
785-
"_lambda_stmt",
786-
generate_lambda_stmt("Faulty syntax create operational issue"),
762+
@pytest.mark.parametrize(
763+
("config", "patch_rollback"),
764+
[
765+
(
766+
{},
767+
"sqlalchemy.orm.session.Session.rollback",
787768
),
788-
patch("sqlalchemy.orm.session.Session.rollback") as mock_session_rollback,
789-
):
790-
freezer.tick(timedelta(minutes=1))
791-
async_fire_time_changed(hass)
792-
await hass.async_block_till_done(wait_background_tasks=True)
793-
assert "sqlite3.OperationalError" in caplog.text
794-
795-
assert mock_session_rollback.call_count == 1
796-
797-
798-
async def test_async_session_rollback_on_error(
769+
(
770+
{CONF_DB_URL: "sqlite+aiosqlite:///"},
771+
"sqlalchemy.ext.asyncio.session.AsyncSession.rollback",
772+
),
773+
],
774+
)
775+
async def test_session_rollback_on_error(
799776
recorder_mock: Recorder,
800777
hass: HomeAssistant,
801778
freezer: FrozenDateTimeFactory,
802779
caplog: pytest.LogCaptureFixture,
780+
config: dict[str, Any],
781+
patch_rollback: str,
803782
) -> None:
804783
"""Test the SQL sensor."""
805-
config = {CONF_DB_URL: "sqlite+aiosqlite:///"}
806784
options = {
807785
CONF_QUERY: "SELECT 5 as value",
808786
CONF_COLUMN_NAME: "value",
@@ -824,16 +802,14 @@ async def test_async_session_rollback_on_error(
824802
"_lambda_stmt",
825803
generate_lambda_stmt("Faulty syntax create operational issue"),
826804
),
827-
patch(
828-
"sqlalchemy.ext.asyncio.session.AsyncSession.rollback"
829-
) as mock_async_session_rollback,
805+
patch(patch_rollback) as mock_rollback,
830806
):
831807
freezer.tick(timedelta(minutes=1))
832808
async_fire_time_changed(hass)
833809
await hass.async_block_till_done(wait_background_tasks=True)
834810
assert "sqlite3.OperationalError" in caplog.text
835811

836-
assert mock_async_session_rollback.call_count == 1
812+
assert mock_rollback.call_count == 1
837813

838814

839815
async def test_query_recover_from_rollback(

0 commit comments

Comments
 (0)