Use service_calls fixture in core platform tests [a-l] (#120904)
parent
c2dc9e9b67
commit
07f095aa42
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
|
|
@ -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"]
|
||||
)
|
||||
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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={})
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue