Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions tests/components/alarm_control_panel/test_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
assert_condition_behavior_all,
assert_condition_behavior_any,
assert_condition_gated_by_labs_flag,
assert_condition_options_supported,
other_states,
parametrize_condition_states_all,
parametrize_condition_states_any,
Expand Down Expand Up @@ -49,6 +50,36 @@ async def test_alarm_control_panel_conditions_gated_by_labs_flag(
await assert_condition_gated_by_labs_flag(hass, caplog, condition)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_key", "base_options", "supports_behavior", "supports_duration"),
[
("alarm_control_panel.is_armed", {}, True, False),
("alarm_control_panel.is_armed_away", {}, True, True),
("alarm_control_panel.is_armed_home", {}, True, True),
("alarm_control_panel.is_armed_night", {}, True, True),
("alarm_control_panel.is_armed_vacation", {}, True, True),
("alarm_control_panel.is_disarmed", {}, True, True),
("alarm_control_panel.is_triggered", {}, True, True),
],
)
async def test_alarm_control_panel_condition_options_validation(
hass: HomeAssistant,
condition_key: str,
base_options: dict[str, Any] | None,
supports_behavior: bool,
supports_duration: bool,
) -> None:
"""Test that alarm_control_panel conditions support the expected options."""
await assert_condition_options_supported(
hass,
condition_key,
base_options,
supports_behavior=supports_behavior,
supports_duration=supports_duration,
)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_target_config", "entity_id", "entities_in_target"),
Expand Down
28 changes: 28 additions & 0 deletions tests/components/assist_satellite/test_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
assert_condition_behavior_all,
assert_condition_behavior_any,
assert_condition_gated_by_labs_flag,
assert_condition_options_supported,
other_states,
parametrize_condition_states_all,
parametrize_condition_states_any,
Expand Down Expand Up @@ -42,6 +43,33 @@ async def test_assist_satellite_conditions_gated_by_labs_flag(
await assert_condition_gated_by_labs_flag(hass, caplog, condition)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_key", "base_options", "supports_behavior", "supports_duration"),
[
("assist_satellite.is_idle", {}, True, True),
("assist_satellite.is_listening", {}, True, True),
("assist_satellite.is_processing", {}, True, True),
("assist_satellite.is_responding", {}, True, True),
],
)
async def test_assist_satellite_condition_options_validation(
hass: HomeAssistant,
condition_key: str,
base_options: dict[str, Any] | None,
supports_behavior: bool,
supports_duration: bool,
) -> None:
"""Test that assist_satellite conditions support the expected options."""
await assert_condition_options_supported(
hass,
condition_key,
base_options,
supports_behavior=supports_behavior,
supports_duration=supports_duration,
)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_target_config", "entity_id", "entities_in_target"),
Expand Down
28 changes: 28 additions & 0 deletions tests/components/battery/test_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
assert_condition_behavior_all,
assert_condition_behavior_any,
assert_condition_gated_by_labs_flag,
assert_condition_options_supported,
parametrize_condition_states_all,
parametrize_condition_states_any,
parametrize_numerical_condition_above_below_all,
Expand Down Expand Up @@ -57,6 +58,33 @@ async def test_battery_conditions_gated_by_labs_flag(
await assert_condition_gated_by_labs_flag(hass, caplog, condition)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_key", "base_options", "supports_behavior", "supports_duration"),
[
("battery.is_low", {}, True, True),
("battery.is_not_low", {}, True, True),
("battery.is_charging", {}, True, True),
("battery.is_not_charging", {}, True, True),
],
)
async def test_battery_condition_options_validation(
hass: HomeAssistant,
condition_key: str,
base_options: dict[str, Any] | None,
supports_behavior: bool,
supports_duration: bool,
) -> None:
"""Test that battery conditions support the expected options."""
await assert_condition_options_supported(
hass,
condition_key,
base_options,
supports_behavior=supports_behavior,
supports_duration=supports_duration,
)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_target_config", "entity_id", "entities_in_target"),
Expand Down
25 changes: 25 additions & 0 deletions tests/components/calendar/test_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
assert_condition_behavior_all,
assert_condition_behavior_any,
assert_condition_gated_by_labs_flag,
assert_condition_options_supported,
parametrize_condition_states_all,
parametrize_condition_states_any,
parametrize_target_entities,
Expand All @@ -38,6 +39,30 @@ async def test_calendar_conditions_gated_by_labs_flag(
await assert_condition_gated_by_labs_flag(hass, caplog, condition)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_key", "base_options", "supports_behavior", "supports_duration"),
[
("calendar.is_event_active", {}, True, True),
],
)
async def test_calendar_condition_options_validation(
hass: HomeAssistant,
condition_key: str,
base_options: dict[str, Any] | None,
supports_behavior: bool,
supports_duration: bool,
) -> None:
"""Test that calendar conditions support the expected options."""
await assert_condition_options_supported(
hass,
condition_key,
base_options,
supports_behavior=supports_behavior,
supports_duration=supports_duration,
)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_target_config", "entity_id", "entities_in_target"),
Expand Down
29 changes: 29 additions & 0 deletions tests/components/climate/test_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
assert_condition_behavior_all,
assert_condition_behavior_any,
assert_condition_gated_by_labs_flag,
assert_condition_options_supported,
assert_numerical_condition_unit_conversion,
other_states,
parametrize_condition_states_all,
Expand Down Expand Up @@ -59,6 +60,34 @@ async def test_climate_conditions_gated_by_labs_flag(
await assert_condition_gated_by_labs_flag(hass, caplog, condition)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_key", "base_options", "supports_behavior", "supports_duration"),
[
("climate.is_off", {}, True, True),
("climate.is_on", {}, True, False),
("climate.is_cooling", {}, True, False),
("climate.is_drying", {}, True, False),
("climate.is_heating", {}, True, False),
],
)
async def test_climate_condition_options_validation(
hass: HomeAssistant,
condition_key: str,
base_options: dict[str, Any] | None,
supports_behavior: bool,
supports_duration: bool,
) -> None:
"""Test that climate conditions support the expected options."""
await assert_condition_options_supported(
hass,
condition_key,
base_options,
supports_behavior=supports_behavior,
supports_duration=supports_duration,
)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_target_config", "entity_id", "entities_in_target"),
Expand Down
28 changes: 28 additions & 0 deletions tests/components/counter/test_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
assert_condition_behavior_all,
assert_condition_behavior_any,
assert_condition_gated_by_labs_flag,
assert_condition_options_supported,
parametrize_condition_states_all,
parametrize_condition_states_any,
parametrize_target_entities,
Expand All @@ -31,6 +32,33 @@ async def test_counter_condition_gated_by_labs_flag(
await assert_condition_gated_by_labs_flag(hass, caplog, "counter.is_value")


_PLAIN_THRESHOLD = {"threshold": {"type": "above", "value": {"number": 50}}}


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_key", "base_options", "supports_behavior", "supports_duration"),
[
("counter.is_value", _PLAIN_THRESHOLD, True, False),
],
)
async def test_counter_condition_options_validation(
hass: HomeAssistant,
condition_key: str,
base_options: dict[str, Any] | None,
supports_behavior: bool,
supports_duration: bool,
) -> None:
"""Test that counter conditions support the expected options."""
await assert_condition_options_supported(
hass,
condition_key,
base_options,
supports_behavior=supports_behavior,
supports_duration=supports_duration,
)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_target_config", "entity_id", "entities_in_target"),
Expand Down
34 changes: 34 additions & 0 deletions tests/components/cover/test_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
assert_condition_behavior_all,
assert_condition_behavior_any,
assert_condition_gated_by_labs_flag,
assert_condition_options_supported,
create_target_condition,
parametrize_condition_states_all,
parametrize_condition_states_any,
Expand Down Expand Up @@ -50,6 +51,39 @@ async def test_cover_conditions_gated_by_labs_flag(
await assert_condition_gated_by_labs_flag(hass, caplog, condition)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_key", "base_options", "supports_behavior", "supports_duration"),
[
("cover.awning_is_closed", {}, True, False),
("cover.awning_is_open", {}, True, False),
("cover.blind_is_closed", {}, True, False),
("cover.blind_is_open", {}, True, False),
("cover.curtain_is_closed", {}, True, False),
("cover.curtain_is_open", {}, True, False),
("cover.shade_is_closed", {}, True, False),
("cover.shade_is_open", {}, True, False),
("cover.shutter_is_closed", {}, True, False),
("cover.shutter_is_open", {}, True, False),
],
)
async def test_cover_condition_options_validation(
hass: HomeAssistant,
condition_key: str,
base_options: dict[str, Any] | None,
supports_behavior: bool,
supports_duration: bool,
) -> None:
"""Test that cover conditions support the expected options."""
await assert_condition_options_supported(
hass,
condition_key,
base_options,
supports_behavior=supports_behavior,
supports_duration=supports_duration,
)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_target_config", "entity_id", "entities_in_target"),
Expand Down
26 changes: 26 additions & 0 deletions tests/components/door/test_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
assert_condition_behavior_all,
assert_condition_behavior_any,
assert_condition_gated_by_labs_flag,
assert_condition_options_supported,
create_target_condition,
parametrize_condition_states_all,
parametrize_condition_states_any,
Expand Down Expand Up @@ -47,6 +48,31 @@ async def test_door_conditions_gated_by_labs_flag(
await assert_condition_gated_by_labs_flag(hass, caplog, condition)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_key", "base_options", "supports_behavior", "supports_duration"),
[
("door.is_closed", {}, True, False),
("door.is_open", {}, True, False),
],
)
async def test_door_condition_options_validation(
hass: HomeAssistant,
condition_key: str,
base_options: dict[str, Any] | None,
supports_behavior: bool,
supports_duration: bool,
) -> None:
"""Test that door conditions support the expected options."""
await assert_condition_options_supported(
hass,
condition_key,
base_options,
supports_behavior=supports_behavior,
supports_duration=supports_duration,
)


# --- binary_sensor tests ---


Expand Down
26 changes: 26 additions & 0 deletions tests/components/fan/test_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
assert_condition_behavior_all,
assert_condition_behavior_any,
assert_condition_gated_by_labs_flag,
assert_condition_options_supported,
parametrize_condition_states_all,
parametrize_condition_states_any,
parametrize_target_entities,
Expand Down Expand Up @@ -39,6 +40,31 @@ async def test_fan_conditions_gated_by_labs_flag(
await assert_condition_gated_by_labs_flag(hass, caplog, condition)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_key", "base_options", "supports_behavior", "supports_duration"),
[
("fan.is_off", {}, True, True),
("fan.is_on", {}, True, True),
],
)
async def test_fan_condition_options_validation(
hass: HomeAssistant,
condition_key: str,
base_options: dict[str, Any] | None,
supports_behavior: bool,
supports_duration: bool,
) -> None:
"""Test that fan conditions support the expected options."""
await assert_condition_options_supported(
hass,
condition_key,
base_options,
supports_behavior=supports_behavior,
supports_duration=supports_duration,
)


@pytest.mark.usefixtures("enable_labs_preview_features")
@pytest.mark.parametrize(
("condition_target_config", "entity_id", "entities_in_target"),
Expand Down
Loading
Loading