Use service_calls fixture in core platform tests [a-l] (#120904)

This commit is contained in:
epenet
2024-07-01 19:27:50 +02:00
committed by GitHub
parent c2dc9e9b67
commit 07f095aa42
20 changed files with 316 additions and 473 deletions

View File

@@ -22,7 +22,6 @@ from tests.common import (
MockConfigEntry,
async_get_device_automation_capabilities,
async_get_device_automations,
async_mock_service,
setup_test_component_platform,
)
@@ -32,12 +31,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_conditions(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -239,7 +232,7 @@ async def test_if_state(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
mock_binary_sensor_entities: dict[str, MockBinarySensor],
) -> None:
"""Test for turn_on and turn_off conditions."""
@@ -308,26 +301,26 @@ async def test_if_state(
)
await hass.async_block_till_done()
assert hass.states.get(entry.entity_id).state == STATE_ON
assert len(calls) == 0
assert len(service_calls) == 0
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_on event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_on event - test_event1"
hass.states.async_set(entry.entity_id, STATE_OFF)
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "is_off event - test_event2"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "is_off event - test_event2"
async def test_if_state_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
mock_binary_sensor_entities: dict[str, MockBinarySensor],
) -> None:
"""Test for turn_on and turn_off conditions."""
@@ -375,19 +368,19 @@ async def test_if_state_legacy(
)
await hass.async_block_till_done()
assert hass.states.get(entry.entity_id).state == STATE_ON
assert len(calls) == 0
assert len(service_calls) == 0
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_on event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_on event - test_event1"
async def test_if_fires_on_for_condition(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
mock_binary_sensor_entities: dict[str, MockBinarySensor],
) -> None:
"""Test for firing if condition is on with delay."""
@@ -439,26 +432,26 @@ async def test_if_fires_on_for_condition(
)
await hass.async_block_till_done()
assert hass.states.get(entry.entity_id).state == STATE_ON
assert len(calls) == 0
assert len(service_calls) == 0
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
# Time travel 10 secs into the future
time_freeze.move_to(point2)
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
# Time travel 20 secs into the future
time_freeze.move_to(point3)
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_off event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_off event - test_event1"

View File

@@ -22,7 +22,6 @@ from tests.common import (
async_fire_time_changed,
async_get_device_automation_capabilities,
async_get_device_automations,
async_mock_service,
setup_test_component_platform,
)
@@ -32,12 +31,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_triggers(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -240,7 +233,7 @@ async def test_if_fires_on_state_change(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
mock_binary_sensor_entities: dict[str, MockBinarySensor],
) -> None:
"""Test for on and off triggers firing."""
@@ -313,21 +306,22 @@ async def test_if_fires_on_state_change(
)
await hass.async_block_till_done()
assert hass.states.get(entry.entity_id).state == STATE_ON
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"not_bat_low device - {entry.entity_id} - on - off - None"
)
hass.states.async_set(entry.entity_id, STATE_ON)
await hass.async_block_till_done()
assert len(calls) == 2
assert len(service_calls) == 2
assert (
calls[1].data["some"] == f"bat_low device - {entry.entity_id} - off - on - None"
service_calls[1].data["some"]
== f"bat_low device - {entry.entity_id} - off - on - None"
)
@@ -335,7 +329,7 @@ async def test_if_fires_on_state_change_with_for(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
mock_binary_sensor_entities: dict[str, MockBinarySensor],
) -> None:
"""Test for triggers firing with delay."""
@@ -388,17 +382,17 @@ async def test_if_fires_on_state_change_with_for(
)
await hass.async_block_till_done()
assert hass.states.get(entry.entity_id).state == STATE_ON
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=10))
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
await hass.async_block_till_done()
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"turn_off device - {entry.entity_id} - on - off - 0:00:05"
)
@@ -407,7 +401,7 @@ async def test_if_fires_on_state_change_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
mock_binary_sensor_entities: dict[str, MockBinarySensor],
) -> None:
"""Test for triggers firing."""
@@ -459,12 +453,12 @@ async def test_if_fires_on_state_change_legacy(
)
await hass.async_block_till_done()
assert hass.states.get(entry.entity_id).state == STATE_ON
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"turn_off device - {entry.entity_id} - on - off - None"
)

View File

@@ -13,17 +13,7 @@ from homeassistant.core import HomeAssistant, ServiceCall
from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.setup import async_setup_component
from tests.common import (
MockConfigEntry,
async_get_device_automations,
async_mock_service,
)
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
from tests.common import MockConfigEntry, async_get_device_automations
async def test_get_triggers(
@@ -109,7 +99,7 @@ async def test_if_fires_on_state_change(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -158,9 +148,9 @@ async def test_if_fires_on_state_change(
# Test triggering device trigger with a to state
hass.states.async_set(entry.entity_id, "2021-01-01T23:59:59+00:00")
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"to - device - {entry.entity_id} - unknown - 2021-01-01T23:59:59+00:00 - None - 0"
)
@@ -169,7 +159,7 @@ async def test_if_fires_on_state_change_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -218,8 +208,8 @@ async def test_if_fires_on_state_change_legacy(
# Test triggering device trigger with a to state
hass.states.async_set(entry.entity_id, "2021-01-01T23:59:59+00:00")
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"to - device - {entry.entity_id} - unknown - 2021-01-01T23:59:59+00:00 - None - 0"
)

View File

@@ -17,11 +17,7 @@ from homeassistant.helpers import (
from homeassistant.helpers.entity_registry import RegistryEntryHider
from homeassistant.setup import async_setup_component
from tests.common import (
MockConfigEntry,
async_get_device_automations,
async_mock_service,
)
from tests.common import MockConfigEntry, async_get_device_automations
@pytest.fixture(autouse=True, name="stub_blueprint_populate")
@@ -29,12 +25,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
@pytest.mark.parametrize(
("set_state", "features_reg", "features_state", "expected_condition_types"),
[
@@ -151,7 +141,7 @@ async def test_if_state(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -220,7 +210,7 @@ async def test_if_state(
# Should not fire, entity doesn't exist yet
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(
entry.entity_id,
@@ -232,8 +222,8 @@ async def test_if_state(
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_hvac_mode - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_hvac_mode - event - test_event1"
hass.states.async_set(
entry.entity_id,
@@ -246,13 +236,13 @@ async def test_if_state(
# Should not fire
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "is_preset_mode - event - test_event2"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "is_preset_mode - event - test_event2"
hass.states.async_set(
entry.entity_id,
@@ -265,14 +255,14 @@ async def test_if_state(
# Should not fire
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 2
assert len(service_calls) == 2
async def test_if_state_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -323,8 +313,8 @@ async def test_if_state_legacy(
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_hvac_mode - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_hvac_mode - event - test_event1"
@pytest.mark.parametrize(

View File

@@ -23,11 +23,7 @@ from homeassistant.helpers import (
from homeassistant.helpers.entity_registry import RegistryEntryHider
from homeassistant.setup import async_setup_component
from tests.common import (
MockConfigEntry,
async_get_device_automations,
async_mock_service,
)
from tests.common import MockConfigEntry, async_get_device_automations
@pytest.fixture(autouse=True, name="stub_blueprint_populate")
@@ -35,12 +31,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_triggers(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -151,7 +141,7 @@ async def test_if_fires_on_state_change(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -236,8 +226,8 @@ async def test_if_fires_on_state_change(
},
)
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "hvac_mode_changed"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "hvac_mode_changed"
# Fake that the temperature is changing
hass.states.async_set(
@@ -250,8 +240,8 @@ async def test_if_fires_on_state_change(
},
)
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "current_temperature_changed"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "current_temperature_changed"
# Fake that the humidity is changing
hass.states.async_set(
@@ -264,15 +254,15 @@ async def test_if_fires_on_state_change(
},
)
await hass.async_block_till_done()
assert len(calls) == 3
assert calls[2].data["some"] == "current_humidity_changed"
assert len(service_calls) == 3
assert service_calls[2].data["some"] == "current_humidity_changed"
async def test_if_fires_on_state_change_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -329,8 +319,8 @@ async def test_if_fires_on_state_change_legacy(
},
)
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "hvac_mode_changed"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "hvac_mode_changed"
async def test_get_trigger_capabilities_hvac_mode(hass: HomeAssistant) -> None:

View File

@@ -26,7 +26,6 @@ from tests.common import (
MockConfigEntry,
async_get_device_automation_capabilities,
async_get_device_automations,
async_mock_service,
setup_test_component_platform,
)
@@ -36,12 +35,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
@pytest.mark.parametrize(
("set_state", "features_reg", "features_state", "expected_condition_types"),
[
@@ -359,7 +352,7 @@ async def test_if_state(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -473,36 +466,36 @@ async def test_if_state(
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_open - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_open - event - test_event1"
hass.states.async_set(entry.entity_id, STATE_CLOSED)
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "is_closed - event - test_event2"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "is_closed - event - test_event2"
hass.states.async_set(entry.entity_id, STATE_OPENING)
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event3")
await hass.async_block_till_done()
assert len(calls) == 3
assert calls[2].data["some"] == "is_opening - event - test_event3"
assert len(service_calls) == 3
assert service_calls[2].data["some"] == "is_opening - event - test_event3"
hass.states.async_set(entry.entity_id, STATE_CLOSING)
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event4")
await hass.async_block_till_done()
assert len(calls) == 4
assert calls[3].data["some"] == "is_closing - event - test_event4"
assert len(service_calls) == 4
assert service_calls[3].data["some"] == "is_closing - event - test_event4"
async def test_if_state_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -550,15 +543,15 @@ async def test_if_state_legacy(
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_open - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_open - event - test_event1"
async def test_if_position(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
caplog: pytest.LogCaptureFixture,
mock_cover_entities: list[MockCover],
) -> None:
@@ -676,10 +669,10 @@ async def test_if_position(
await hass.async_block_till_done()
hass.bus.async_fire("test_event3")
await hass.async_block_till_done()
assert len(calls) == 3
assert calls[0].data["some"] == "is_pos_gt_45 - event - test_event1"
assert calls[1].data["some"] == "is_pos_lt_90 - event - test_event2"
assert calls[2].data["some"] == "is_pos_gt_45_lt_90 - event - test_event3"
assert len(service_calls) == 3
assert service_calls[0].data["some"] == "is_pos_gt_45 - event - test_event1"
assert service_calls[1].data["some"] == "is_pos_lt_90 - event - test_event2"
assert service_calls[2].data["some"] == "is_pos_gt_45_lt_90 - event - test_event3"
hass.states.async_set(
ent.entity_id, STATE_CLOSED, attributes={"current_position": 45}
@@ -690,9 +683,9 @@ async def test_if_position(
await hass.async_block_till_done()
hass.bus.async_fire("test_event3")
await hass.async_block_till_done()
assert len(calls) == 5
assert calls[3].data["some"] == "is_pos_not_gt_45 - event - test_event1"
assert calls[4].data["some"] == "is_pos_lt_90 - event - test_event2"
assert len(service_calls) == 5
assert service_calls[3].data["some"] == "is_pos_not_gt_45 - event - test_event1"
assert service_calls[4].data["some"] == "is_pos_lt_90 - event - test_event2"
hass.states.async_set(
ent.entity_id, STATE_CLOSED, attributes={"current_position": 90}
@@ -701,14 +694,14 @@ async def test_if_position(
hass.bus.async_fire("test_event2")
hass.bus.async_fire("test_event3")
await hass.async_block_till_done()
assert len(calls) == 6
assert calls[5].data["some"] == "is_pos_gt_45 - event - test_event1"
assert len(service_calls) == 6
assert service_calls[5].data["some"] == "is_pos_gt_45 - event - test_event1"
hass.states.async_set(ent.entity_id, STATE_UNAVAILABLE, attributes={})
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 7
assert calls[6].data["some"] == "is_pos_not_gt_45 - event - test_event1"
assert len(service_calls) == 7
assert service_calls[6].data["some"] == "is_pos_not_gt_45 - event - test_event1"
for record in caplog.records:
assert record.levelname in ("DEBUG", "INFO")
@@ -718,7 +711,7 @@ async def test_if_tilt_position(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
caplog: pytest.LogCaptureFixture,
mock_cover_entities: list[MockCover],
) -> None:
@@ -836,10 +829,10 @@ async def test_if_tilt_position(
await hass.async_block_till_done()
hass.bus.async_fire("test_event3")
await hass.async_block_till_done()
assert len(calls) == 3
assert calls[0].data["some"] == "is_pos_gt_45 - event - test_event1"
assert calls[1].data["some"] == "is_pos_lt_90 - event - test_event2"
assert calls[2].data["some"] == "is_pos_gt_45_lt_90 - event - test_event3"
assert len(service_calls) == 3
assert service_calls[0].data["some"] == "is_pos_gt_45 - event - test_event1"
assert service_calls[1].data["some"] == "is_pos_lt_90 - event - test_event2"
assert service_calls[2].data["some"] == "is_pos_gt_45_lt_90 - event - test_event3"
hass.states.async_set(
ent.entity_id, STATE_CLOSED, attributes={"current_tilt_position": 45}
@@ -850,9 +843,9 @@ async def test_if_tilt_position(
await hass.async_block_till_done()
hass.bus.async_fire("test_event3")
await hass.async_block_till_done()
assert len(calls) == 5
assert calls[3].data["some"] == "is_pos_not_gt_45 - event - test_event1"
assert calls[4].data["some"] == "is_pos_lt_90 - event - test_event2"
assert len(service_calls) == 5
assert service_calls[3].data["some"] == "is_pos_not_gt_45 - event - test_event1"
assert service_calls[4].data["some"] == "is_pos_lt_90 - event - test_event2"
hass.states.async_set(
ent.entity_id, STATE_CLOSED, attributes={"current_tilt_position": 90}
@@ -863,14 +856,14 @@ async def test_if_tilt_position(
await hass.async_block_till_done()
hass.bus.async_fire("test_event3")
await hass.async_block_till_done()
assert len(calls) == 6
assert calls[5].data["some"] == "is_pos_gt_45 - event - test_event1"
assert len(service_calls) == 6
assert service_calls[5].data["some"] == "is_pos_gt_45 - event - test_event1"
hass.states.async_set(ent.entity_id, STATE_UNAVAILABLE, attributes={})
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 7
assert calls[6].data["some"] == "is_pos_not_gt_45 - event - test_event1"
assert len(service_calls) == 7
assert service_calls[6].data["some"] == "is_pos_not_gt_45 - event - test_event1"
for record in caplog.records:
assert record.levelname in ("DEBUG", "INFO")

View File

@@ -29,7 +29,6 @@ from tests.common import (
async_fire_time_changed,
async_get_device_automation_capabilities,
async_get_device_automations,
async_mock_service,
setup_test_component_platform,
)
@@ -39,12 +38,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
@pytest.mark.parametrize(
("set_state", "features_reg", "features_state", "expected_trigger_types"),
[
@@ -381,7 +374,7 @@ async def test_if_fires_on_state_change(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for state triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -496,36 +489,36 @@ async def test_if_fires_on_state_change(
# Fake that the entity is opened.
hass.states.async_set(entry.entity_id, STATE_OPEN)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"opened - device - {entry.entity_id} - closed - open - None"
)
# Fake that the entity is closed.
hass.states.async_set(entry.entity_id, STATE_CLOSED)
await hass.async_block_till_done()
assert len(calls) == 2
assert len(service_calls) == 2
assert (
calls[1].data["some"]
service_calls[1].data["some"]
== f"closed - device - {entry.entity_id} - open - closed - None"
)
# Fake that the entity is opening.
hass.states.async_set(entry.entity_id, STATE_OPENING)
await hass.async_block_till_done()
assert len(calls) == 3
assert len(service_calls) == 3
assert (
calls[2].data["some"]
service_calls[2].data["some"]
== f"opening - device - {entry.entity_id} - closed - opening - None"
)
# Fake that the entity is closing.
hass.states.async_set(entry.entity_id, STATE_CLOSING)
await hass.async_block_till_done()
assert len(calls) == 4
assert len(service_calls) == 4
assert (
calls[3].data["some"]
service_calls[3].data["some"]
== f"closing - device - {entry.entity_id} - opening - closing - None"
)
@@ -534,7 +527,7 @@ async def test_if_fires_on_state_change_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for state triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -583,9 +576,9 @@ async def test_if_fires_on_state_change_legacy(
# Fake that the entity is opened.
hass.states.async_set(entry.entity_id, STATE_OPEN)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"opened - device - {entry.entity_id} - closed - open - None"
)
@@ -594,7 +587,7 @@ async def test_if_fires_on_state_change_with_for(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for triggers firing with delay."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -640,17 +633,17 @@ async def test_if_fires_on_state_change_with_for(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OPEN)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=10))
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
await hass.async_block_till_done()
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"turn_off device - {entry.entity_id} - closed - open - 0:00:05"
)
@@ -660,7 +653,7 @@ async def test_if_fires_on_position(
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
mock_cover_entities: list[MockCover],
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for position triggers."""
setup_test_component_platform(hass, DOMAIN, mock_cover_entities)
@@ -769,9 +762,13 @@ async def test_if_fires_on_position(
ent.entity_id, STATE_OPEN, attributes={"current_position": 50}
)
await hass.async_block_till_done()
assert len(calls) == 3
assert len(service_calls) == 3
assert sorted(
[calls[0].data["some"], calls[1].data["some"], calls[2].data["some"]]
[
service_calls[0].data["some"],
service_calls[1].data["some"],
service_calls[2].data["some"],
]
) == sorted(
[
(
@@ -791,9 +788,9 @@ async def test_if_fires_on_position(
ent.entity_id, STATE_CLOSED, attributes={"current_position": 45}
)
await hass.async_block_till_done()
assert len(calls) == 4
assert len(service_calls) == 4
assert (
calls[3].data["some"]
service_calls[3].data["some"]
== f"is_pos_lt_90 - device - {entry.entity_id} - closed - closed - None"
)
@@ -801,9 +798,9 @@ async def test_if_fires_on_position(
ent.entity_id, STATE_CLOSED, attributes={"current_position": 90}
)
await hass.async_block_till_done()
assert len(calls) == 5
assert len(service_calls) == 5
assert (
calls[4].data["some"]
service_calls[4].data["some"]
== f"is_pos_gt_45 - device - {entry.entity_id} - closed - closed - None"
)
@@ -812,7 +809,7 @@ async def test_if_fires_on_tilt_position(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
mock_cover_entities: list[MockCover],
) -> None:
"""Test for tilt position triggers."""
@@ -924,9 +921,13 @@ async def test_if_fires_on_tilt_position(
ent.entity_id, STATE_OPEN, attributes={"current_tilt_position": 50}
)
await hass.async_block_till_done()
assert len(calls) == 3
assert len(service_calls) == 3
assert sorted(
[calls[0].data["some"], calls[1].data["some"], calls[2].data["some"]]
[
service_calls[0].data["some"],
service_calls[1].data["some"],
service_calls[2].data["some"],
]
) == sorted(
[
(
@@ -946,9 +947,9 @@ async def test_if_fires_on_tilt_position(
ent.entity_id, STATE_CLOSED, attributes={"current_tilt_position": 45}
)
await hass.async_block_till_done()
assert len(calls) == 4
assert len(service_calls) == 4
assert (
calls[3].data["some"]
service_calls[3].data["some"]
== f"is_pos_lt_90 - device - {entry.entity_id} - closed - closed - None"
)
@@ -956,8 +957,8 @@ async def test_if_fires_on_tilt_position(
ent.entity_id, STATE_CLOSED, attributes={"current_tilt_position": 90}
)
await hass.async_block_till_done()
assert len(calls) == 5
assert len(service_calls) == 5
assert (
calls[4].data["some"]
service_calls[4].data["some"]
== f"is_pos_gt_45 - device - {entry.entity_id} - closed - closed - None"
)

View File

@@ -23,13 +23,7 @@ from homeassistant.loader import IntegrationNotFound
from homeassistant.requirements import RequirementsNotFound
from homeassistant.setup import async_setup_component
from tests.common import (
MockConfigEntry,
MockModule,
async_mock_service,
mock_integration,
mock_platform,
)
from tests.common import MockConfigEntry, MockModule, mock_integration, mock_platform
from tests.typing import WebSocketGenerator
@@ -1384,15 +1378,9 @@ async def test_automation_with_bad_condition(
assert expected_error.format(path="['condition'][0]") in caplog.text
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_automation_with_sub_condition(
hass: HomeAssistant,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
) -> None:
@@ -1492,29 +1480,29 @@ async def test_automation_with_sub_condition(
await hass.async_block_till_done()
assert hass.states.get(entity_entry1.entity_id).state == STATE_ON
assert hass.states.get(entity_entry2.entity_id).state == STATE_OFF
assert len(calls) == 0
assert len(service_calls) == 0
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "or event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "or event - test_event1"
hass.states.async_set(entity_entry1.entity_id, STATE_OFF)
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
hass.states.async_set(entity_entry2.entity_id, STATE_ON)
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "or event - test_event1"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "or event - test_event1"
hass.states.async_set(entity_entry1.entity_id, STATE_ON)
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 4
assert [calls[2].data["some"], calls[3].data["some"]] == unordered(
assert len(service_calls) == 4
assert [service_calls[2].data["some"], service_calls[3].data["some"]] == unordered(
["or event - test_event1", "and event - test_event1"]
)

View File

@@ -11,7 +11,7 @@ from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.setup import async_setup_component
import homeassistant.util.dt as dt_util
from tests.common import MockConfigEntry, async_fire_time_changed, async_mock_service
from tests.common import MockConfigEntry, async_fire_time_changed
@pytest.fixture(autouse=True, name="stub_blueprint_populate")
@@ -19,17 +19,11 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_if_fires_on_state_change(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing.
@@ -121,20 +115,20 @@ async def test_if_fires_on_state_change(
)
await hass.async_block_till_done()
assert hass.states.get(entry.entity_id).state == STATE_ON
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
await hass.async_block_till_done()
assert len(calls) == 2
assert {calls[0].data["some"], calls[1].data["some"]} == {
assert len(service_calls) == 2
assert {service_calls[0].data["some"], service_calls[1].data["some"]} == {
f"turn_off device - {entry.entity_id} - on - off - None",
f"turn_on_or_off device - {entry.entity_id} - on - off - None",
}
hass.states.async_set(entry.entity_id, STATE_ON)
await hass.async_block_till_done()
assert len(calls) == 4
assert {calls[2].data["some"], calls[3].data["some"]} == {
assert len(service_calls) == 4
assert {service_calls[2].data["some"], service_calls[3].data["some"]} == {
f"turn_on device - {entry.entity_id} - off - on - None",
f"turn_on_or_off device - {entry.entity_id} - off - on - None",
}
@@ -145,7 +139,7 @@ async def test_if_fires_on_state_change_with_for(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
trigger: str,
) -> None:
"""Test for triggers firing with delay."""
@@ -193,16 +187,16 @@ async def test_if_fires_on_state_change_with_for(
)
await hass.async_block_till_done()
assert hass.states.get(entry.entity_id).state == STATE_ON
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=10))
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
await hass.async_block_till_done()
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"turn_off device - {entry.entity_id} - on - off - 0:00:05"
)

View File

@@ -12,11 +12,7 @@ from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.helpers.entity_registry import RegistryEntryHider
from homeassistant.setup import async_setup_component
from tests.common import (
MockConfigEntry,
async_get_device_automations,
async_mock_service,
)
from tests.common import MockConfigEntry, async_get_device_automations
@pytest.fixture(autouse=True, name="stub_blueprint_populate")
@@ -24,12 +20,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_conditions(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -114,7 +104,7 @@ async def test_if_state(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -184,22 +174,22 @@ async def test_if_state(
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_home - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_home - event - test_event1"
hass.states.async_set(entry.entity_id, "school")
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "is_not_home - event - test_event2"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "is_not_home - event - test_event2"
async def test_if_state_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -247,5 +237,5 @@ async def test_if_state_legacy(
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_home - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_home - event - test_event1"

View File

@@ -17,11 +17,7 @@ from homeassistant.helpers import (
from homeassistant.helpers.entity_registry import RegistryEntryHider
from homeassistant.setup import async_setup_component
from tests.common import (
MockConfigEntry,
async_get_device_automations,
async_mock_service,
)
from tests.common import MockConfigEntry, async_get_device_automations
@pytest.fixture(autouse=True, name="stub_blueprint_populate")
@@ -36,12 +32,6 @@ HOME_LATITUDE = 32.880837
HOME_LONGITUDE = -117.237561
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
@pytest.fixture(autouse=True)
def setup_zone(hass: HomeAssistant) -> None:
"""Create test zone."""
@@ -145,7 +135,7 @@ async def test_if_fires_on_zone_change(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for enter and leave triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -228,9 +218,9 @@ async def test_if_fires_on_zone_change(
{"latitude": HOME_LATITUDE, "longitude": HOME_LONGITUDE},
)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"enter - device - {entry.entity_id} - -117.235 - -117.238"
)
@@ -241,9 +231,9 @@ async def test_if_fires_on_zone_change(
{"latitude": AWAY_LATITUDE, "longitude": AWAY_LONGITUDE},
)
await hass.async_block_till_done()
assert len(calls) == 2
assert len(service_calls) == 2
assert (
calls[1].data["some"]
service_calls[1].data["some"]
== f"leave - device - {entry.entity_id} - -117.238 - -117.235"
)
@@ -252,7 +242,7 @@ async def test_if_fires_on_zone_change_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for enter and leave triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -311,9 +301,9 @@ async def test_if_fires_on_zone_change_legacy(
{"latitude": HOME_LATITUDE, "longitude": HOME_LONGITUDE},
)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"enter - device - {entry.entity_id} - -117.235 - -117.238"
)

View File

@@ -12,11 +12,7 @@ from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.helpers.entity_registry import RegistryEntryHider
from homeassistant.setup import async_setup_component
from tests.common import (
MockConfigEntry,
async_get_device_automations,
async_mock_service,
)
from tests.common import MockConfigEntry, async_get_device_automations
@pytest.fixture(autouse=True, name="stub_blueprint_populate")
@@ -24,12 +20,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_conditions(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -114,7 +104,7 @@ async def test_if_state(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -184,22 +174,22 @@ async def test_if_state(
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_on - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_on - event - test_event1"
hass.states.async_set(entry.entity_id, STATE_OFF)
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "is_off - event - test_event2"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "is_off - event - test_event2"
async def test_if_state_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -246,5 +236,5 @@ async def test_if_state_legacy(
)
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_on - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_on - event - test_event1"

View File

@@ -20,7 +20,6 @@ from tests.common import (
async_fire_time_changed,
async_get_device_automation_capabilities,
async_get_device_automations,
async_mock_service,
)
@@ -29,12 +28,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_triggers(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -180,7 +173,7 @@ async def test_if_fires_on_state_change(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -273,8 +266,8 @@ async def test_if_fires_on_state_change(
# Fake that the entity is turning on.
hass.states.async_set(entry.entity_id, STATE_ON)
await hass.async_block_till_done()
assert len(calls) == 2
assert {calls[0].data["some"], calls[1].data["some"]} == {
assert len(service_calls) == 2
assert {service_calls[0].data["some"], service_calls[1].data["some"]} == {
f"turn_on - device - {entry.entity_id} - off - on - None",
f"turn_on_or_off - device - {entry.entity_id} - off - on - None",
}
@@ -282,8 +275,8 @@ async def test_if_fires_on_state_change(
# Fake that the entity is turning off.
hass.states.async_set(entry.entity_id, STATE_OFF)
await hass.async_block_till_done()
assert len(calls) == 4
assert {calls[2].data["some"], calls[3].data["some"]} == {
assert len(service_calls) == 4
assert {service_calls[2].data["some"], service_calls[3].data["some"]} == {
f"turn_off - device - {entry.entity_id} - on - off - None",
f"turn_on_or_off - device - {entry.entity_id} - on - off - None",
}
@@ -293,7 +286,7 @@ async def test_if_fires_on_state_change_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -342,9 +335,9 @@ async def test_if_fires_on_state_change_legacy(
# Fake that the entity is turning on.
hass.states.async_set(entry.entity_id, STATE_ON)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"turn_on - device - {entry.entity_id} - off - on - None"
)
@@ -353,7 +346,7 @@ async def test_if_fires_on_state_change_with_for(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for triggers firing with delay."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -399,16 +392,16 @@ async def test_if_fires_on_state_change_with_for(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=10))
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
await hass.async_block_till_done()
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"turn_off device - {entry.entity_id} - on - off - 0:00:05"
)

View File

@@ -17,11 +17,7 @@ from homeassistant.helpers import (
from homeassistant.helpers.entity_registry import RegistryEntryHider
from homeassistant.setup import async_setup_component
from tests.common import (
MockConfigEntry,
async_get_device_automations,
async_mock_service,
)
from tests.common import MockConfigEntry, async_get_device_automations
@pytest.fixture(autouse=True, name="stub_blueprint_populate")
@@ -29,12 +25,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
@pytest.mark.parametrize(
("set_state", "features_reg", "features_state", "expected_condition_types"),
[
@@ -153,7 +143,7 @@ async def test_if_state(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -238,42 +228,42 @@ async def test_if_state(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_on event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_on event - test_event1"
hass.states.async_set(entry.entity_id, STATE_OFF)
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "is_off event - test_event2"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "is_off event - test_event2"
hass.states.async_set(entry.entity_id, STATE_ON, {ATTR_MODE: const.MODE_AWAY})
hass.bus.async_fire("test_event3")
await hass.async_block_till_done()
assert len(calls) == 3
assert calls[2].data["some"] == "is_mode - event - test_event3"
assert len(service_calls) == 3
assert service_calls[2].data["some"] == "is_mode - event - test_event3"
hass.states.async_set(entry.entity_id, STATE_ON, {ATTR_MODE: const.MODE_HOME})
# Should not fire
hass.bus.async_fire("test_event3")
await hass.async_block_till_done()
assert len(calls) == 3
assert len(service_calls) == 3
async def test_if_state_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -316,15 +306,15 @@ async def test_if_state_legacy(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_ON, {ATTR_MODE: const.MODE_AWAY})
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_mode - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_mode - event - test_event1"
@pytest.mark.parametrize(

View File

@@ -30,7 +30,6 @@ from tests.common import (
MockConfigEntry,
async_fire_time_changed,
async_get_device_automations,
async_mock_service,
)
@@ -39,12 +38,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_triggers(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -166,7 +159,7 @@ async def test_if_fires_on_state_change(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -356,8 +349,8 @@ async def test_if_fires_on_state_change(
{const.ATTR_HUMIDITY: 7, const.ATTR_CURRENT_HUMIDITY: 35},
)
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "target_humidity_changed_below"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "target_humidity_changed_below"
# Fake that the current humidity is changing
hass.states.async_set(
@@ -366,8 +359,8 @@ async def test_if_fires_on_state_change(
{const.ATTR_HUMIDITY: 7, const.ATTR_CURRENT_HUMIDITY: 18},
)
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "current_humidity_changed_below"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "current_humidity_changed_below"
# Fake that the humidity target is changing
hass.states.async_set(
@@ -376,8 +369,8 @@ async def test_if_fires_on_state_change(
{const.ATTR_HUMIDITY: 37, const.ATTR_CURRENT_HUMIDITY: 18},
)
await hass.async_block_till_done()
assert len(calls) == 3
assert calls[2].data["some"] == "target_humidity_changed_above"
assert len(service_calls) == 3
assert service_calls[2].data["some"] == "target_humidity_changed_above"
# Fake that the current humidity is changing
hass.states.async_set(
@@ -386,14 +379,14 @@ async def test_if_fires_on_state_change(
{const.ATTR_HUMIDITY: 37, const.ATTR_CURRENT_HUMIDITY: 41},
)
await hass.async_block_till_done()
assert len(calls) == 4
assert calls[3].data["some"] == "current_humidity_changed_above"
assert len(service_calls) == 4
assert service_calls[3].data["some"] == "current_humidity_changed_above"
# Wait 6 minutes
async_fire_time_changed(hass, dt_util.utcnow() + datetime.timedelta(minutes=6))
await hass.async_block_till_done()
assert len(calls) == 6
assert {calls[4].data["some"], calls[5].data["some"]} == {
assert len(service_calls) == 6
assert {service_calls[4].data["some"], service_calls[5].data["some"]} == {
"current_humidity_changed_above_for",
"target_humidity_changed_above_for",
}
@@ -405,8 +398,8 @@ async def test_if_fires_on_state_change(
{const.ATTR_HUMIDITY: 37, const.ATTR_CURRENT_HUMIDITY: 41},
)
await hass.async_block_till_done()
assert len(calls) == 8
assert {calls[6].data["some"], calls[7].data["some"]} == {
assert len(service_calls) == 8
assert {service_calls[6].data["some"], service_calls[7].data["some"]} == {
"turn_off device - humidifier.test_5678 - on - off - None",
"turn_on_or_off device - humidifier.test_5678 - on - off - None",
}
@@ -418,8 +411,8 @@ async def test_if_fires_on_state_change(
{const.ATTR_HUMIDITY: 37, const.ATTR_CURRENT_HUMIDITY: 41},
)
await hass.async_block_till_done()
assert len(calls) == 10
assert {calls[8].data["some"], calls[9].data["some"]} == {
assert len(service_calls) == 10
assert {service_calls[8].data["some"], service_calls[9].data["some"]} == {
"turn_on device - humidifier.test_5678 - off - on - None",
"turn_on_or_off device - humidifier.test_5678 - off - on - None",
}
@@ -429,7 +422,7 @@ async def test_if_fires_on_state_change_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -479,12 +472,14 @@ async def test_if_fires_on_state_change_legacy(
# Fake that the humidity is changing
hass.states.async_set(entry.entity_id, STATE_ON, {const.ATTR_HUMIDITY: 7})
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "target_humidity_changed_below"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "target_humidity_changed_below"
async def test_invalid_config(
hass: HomeAssistant, entity_registry: er.EntityRegistry, calls: list[ServiceCall]
hass: HomeAssistant,
entity_registry: er.EntityRegistry,
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
entry = entity_registry.async_get_or_create(DOMAIN, "test", "5678")
@@ -528,7 +523,7 @@ async def test_invalid_config(
hass.states.async_set(entry.entity_id, STATE_ON, {const.ATTR_HUMIDITY: 7})
await hass.async_block_till_done()
# Should not trigger for invalid config
assert len(calls) == 0
assert len(service_calls) == 0
async def test_get_trigger_capabilities_on(hass: HomeAssistant) -> None:

View File

@@ -14,7 +14,7 @@ from homeassistant.components.light import (
LightEntityFeature,
)
from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant, ServiceCall
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.helpers.entity_registry import RegistryEntryHider
from homeassistant.setup import async_setup_component
@@ -32,12 +32,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_actions(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -471,7 +465,6 @@ async def test_action(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off actions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -636,7 +629,6 @@ async def test_action_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off actions."""
config_entry = MockConfigEntry(domain="test", data={})

View File

@@ -22,7 +22,6 @@ from tests.common import (
MockConfigEntry,
async_get_device_automation_capabilities,
async_get_device_automations,
async_mock_service,
setup_test_component_platform,
)
@@ -32,12 +31,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_conditions(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -186,7 +179,7 @@ async def test_if_state(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -252,20 +245,20 @@ async def test_if_state(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_on event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_on event - test_event1"
hass.states.async_set(entry.entity_id, STATE_OFF)
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "is_off event - test_event2"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "is_off event - test_event2"
@pytest.mark.usefixtures("enable_custom_integrations")
@@ -273,7 +266,7 @@ async def test_if_state_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -318,20 +311,20 @@ async def test_if_state_legacy(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_on event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_on event - test_event1"
async def test_if_fires_on_for_condition(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
mock_light_entities: list[MockLight],
) -> None:
"""Test for firing if condition is on with delay."""
@@ -385,26 +378,26 @@ async def test_if_fires_on_for_condition(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
# Time travel 10 secs into the future
freezer.move_to(point2)
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
# Time travel 20 secs into the future
freezer.move_to(point3)
hass.bus.async_fire("test_event1")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_off event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_off event - test_event1"

View File

@@ -20,7 +20,6 @@ from tests.common import (
async_fire_time_changed,
async_get_device_automation_capabilities,
async_get_device_automations,
async_mock_service,
)
DATA_TEMPLATE_ATTRIBUTES = (
@@ -37,12 +36,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_triggers(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -189,7 +182,7 @@ async def test_if_fires_on_state_change(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -258,20 +251,20 @@ async def test_if_fires_on_state_change(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
await hass.async_block_till_done()
assert len(calls) == 2
assert {calls[0].data["some"], calls[1].data["some"]} == {
assert len(service_calls) == 2
assert {service_calls[0].data["some"], service_calls[1].data["some"]} == {
f"turn_off device - {entry.entity_id} - on - off - None",
f"turn_on_or_off device - {entry.entity_id} - on - off - None",
}
hass.states.async_set(entry.entity_id, STATE_ON)
await hass.async_block_till_done()
assert len(calls) == 4
assert {calls[2].data["some"], calls[3].data["some"]} == {
assert len(service_calls) == 4
assert {service_calls[2].data["some"], service_calls[3].data["some"]} == {
f"turn_on device - {entry.entity_id} - off - on - None",
f"turn_on_or_off device - {entry.entity_id} - off - on - None",
}
@@ -282,7 +275,7 @@ async def test_if_fires_on_state_change_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -321,13 +314,14 @@ async def test_if_fires_on_state_change_legacy(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"] == f"turn_on device - {entry.entity_id} - on - off - None"
service_calls[0].data["some"]
== f"turn_on device - {entry.entity_id} - on - off - None"
)
@@ -336,7 +330,7 @@ async def test_if_fires_on_state_change_with_for(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for triggers firing with delay."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -376,16 +370,16 @@ async def test_if_fires_on_state_change_with_for(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_OFF)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=10))
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
await hass.async_block_till_done()
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"turn_off device - {entry.entity_id} - on - off - 0:00:05"
)

View File

@@ -21,11 +21,7 @@ from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.helpers.entity_registry import RegistryEntryHider
from homeassistant.setup import async_setup_component
from tests.common import (
MockConfigEntry,
async_get_device_automations,
async_mock_service,
)
from tests.common import MockConfigEntry, async_get_device_automations
@pytest.fixture(autouse=True, name="stub_blueprint_populate")
@@ -33,12 +29,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_conditions(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -139,7 +129,7 @@ async def test_if_state(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -291,52 +281,52 @@ async def test_if_state(
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_locked - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_locked - event - test_event1"
hass.states.async_set(entry.entity_id, STATE_UNLOCKED)
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 2
assert calls[1].data["some"] == "is_unlocked - event - test_event2"
assert len(service_calls) == 2
assert service_calls[1].data["some"] == "is_unlocked - event - test_event2"
hass.states.async_set(entry.entity_id, STATE_UNLOCKING)
hass.bus.async_fire("test_event3")
await hass.async_block_till_done()
assert len(calls) == 3
assert calls[2].data["some"] == "is_unlocking - event - test_event3"
assert len(service_calls) == 3
assert service_calls[2].data["some"] == "is_unlocking - event - test_event3"
hass.states.async_set(entry.entity_id, STATE_LOCKING)
hass.bus.async_fire("test_event4")
await hass.async_block_till_done()
assert len(calls) == 4
assert calls[3].data["some"] == "is_locking - event - test_event4"
assert len(service_calls) == 4
assert service_calls[3].data["some"] == "is_locking - event - test_event4"
hass.states.async_set(entry.entity_id, STATE_JAMMED)
hass.bus.async_fire("test_event5")
await hass.async_block_till_done()
assert len(calls) == 5
assert calls[4].data["some"] == "is_jammed - event - test_event5"
assert len(service_calls) == 5
assert service_calls[4].data["some"] == "is_jammed - event - test_event5"
hass.states.async_set(entry.entity_id, STATE_OPENING)
hass.bus.async_fire("test_event6")
await hass.async_block_till_done()
assert len(calls) == 6
assert calls[5].data["some"] == "is_opening - event - test_event6"
assert len(service_calls) == 6
assert service_calls[5].data["some"] == "is_opening - event - test_event6"
hass.states.async_set(entry.entity_id, STATE_OPEN)
hass.bus.async_fire("test_event7")
await hass.async_block_till_done()
assert len(calls) == 7
assert calls[6].data["some"] == "is_open - event - test_event7"
assert len(service_calls) == 7
assert service_calls[6].data["some"] == "is_open - event - test_event7"
async def test_if_state_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off conditions."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -380,5 +370,5 @@ async def test_if_state_legacy(
hass.bus.async_fire("test_event1")
hass.bus.async_fire("test_event2")
await hass.async_block_till_done()
assert len(calls) == 1
assert calls[0].data["some"] == "is_locked - event - test_event1"
assert len(service_calls) == 1
assert service_calls[0].data["some"] == "is_locked - event - test_event1"

View File

@@ -29,7 +29,6 @@ from tests.common import (
async_fire_time_changed,
async_get_device_automation_capabilities,
async_get_device_automations,
async_mock_service,
)
@@ -38,12 +37,6 @@ def stub_blueprint_populate_autouse(stub_blueprint_populate: None) -> None:
"""Stub copying the blueprints to the config folder."""
@pytest.fixture
def calls(hass: HomeAssistant) -> list[ServiceCall]:
"""Track calls to a mock service."""
return async_mock_service(hass, "test", "automation")
async def test_get_triggers(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
@@ -212,7 +205,7 @@ async def test_if_fires_on_state_change(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -296,27 +289,27 @@ async def test_if_fires_on_state_change(
# Fake that the entity is turning on.
hass.states.async_set(entry.entity_id, STATE_LOCKED)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"locked - device - {entry.entity_id} - unlocked - locked - None"
)
# Fake that the entity is turning off.
hass.states.async_set(entry.entity_id, STATE_UNLOCKED)
await hass.async_block_till_done()
assert len(calls) == 2
assert len(service_calls) == 2
assert (
calls[1].data["some"]
service_calls[1].data["some"]
== f"unlocked - device - {entry.entity_id} - locked - unlocked - None"
)
# Fake that the entity is opens.
hass.states.async_set(entry.entity_id, STATE_OPEN)
await hass.async_block_till_done()
assert len(calls) == 3
assert len(service_calls) == 3
assert (
calls[2].data["some"]
service_calls[2].data["some"]
== f"open - device - {entry.entity_id} - unlocked - open - None"
)
@@ -325,7 +318,7 @@ async def test_if_fires_on_state_change_legacy(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for turn_on and turn_off triggers firing."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -371,9 +364,9 @@ async def test_if_fires_on_state_change_legacy(
# Fake that the entity is turning on.
hass.states.async_set(entry.entity_id, STATE_LOCKED)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"locked - device - {entry.entity_id} - unlocked - locked - None"
)
@@ -382,7 +375,7 @@ async def test_if_fires_on_state_change_with_for(
hass: HomeAssistant,
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls: list[ServiceCall],
service_calls: list[ServiceCall],
) -> None:
"""Test for triggers firing with delay."""
config_entry = MockConfigEntry(domain="test", data={})
@@ -516,64 +509,64 @@ async def test_if_fires_on_state_change_with_for(
},
)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
hass.states.async_set(entry.entity_id, STATE_LOCKED)
await hass.async_block_till_done()
assert len(calls) == 0
assert len(service_calls) == 0
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=10))
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
await hass.async_block_till_done()
assert (
calls[0].data["some"]
service_calls[0].data["some"]
== f"turn_off device - {entry.entity_id} - unlocked - locked - 0:00:05"
)
hass.states.async_set(entry.entity_id, STATE_UNLOCKING)
await hass.async_block_till_done()
assert len(calls) == 1
assert len(service_calls) == 1
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=16))
await hass.async_block_till_done()
assert len(calls) == 2
assert len(service_calls) == 2
await hass.async_block_till_done()
assert (
calls[1].data["some"]
service_calls[1].data["some"]
== f"turn_on device - {entry.entity_id} - locked - unlocking - 0:00:05"
)
hass.states.async_set(entry.entity_id, STATE_JAMMED)
await hass.async_block_till_done()
assert len(calls) == 2
assert len(service_calls) == 2
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=21))
await hass.async_block_till_done()
assert len(calls) == 3
assert len(service_calls) == 3
await hass.async_block_till_done()
assert (
calls[2].data["some"]
service_calls[2].data["some"]
== f"turn_off device - {entry.entity_id} - unlocking - jammed - 0:00:05"
)
hass.states.async_set(entry.entity_id, STATE_LOCKING)
await hass.async_block_till_done()
assert len(calls) == 3
assert len(service_calls) == 3
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=27))
await hass.async_block_till_done()
assert len(calls) == 4
assert len(service_calls) == 4
await hass.async_block_till_done()
assert (
calls[3].data["some"]
service_calls[3].data["some"]
== f"turn_on device - {entry.entity_id} - jammed - locking - 0:00:05"
)
hass.states.async_set(entry.entity_id, STATE_OPENING)
await hass.async_block_till_done()
assert len(calls) == 4
assert len(service_calls) == 4
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=27))
await hass.async_block_till_done()
assert len(calls) == 5
assert len(service_calls) == 5
await hass.async_block_till_done()
assert (
calls[4].data["some"]
service_calls[4].data["some"]
== f"turn_on device - {entry.entity_id} - locking - opening - 0:00:05"
)