mirror of
https://github.com/home-assistant/core.git
synced 2025-11-15 05:50:13 +00:00
Improve test parametrization
This commit is contained in:
@@ -68,6 +68,7 @@ async def setup_automation(
|
|||||||
def parametrize_opened_closed_trigger_states(
|
def parametrize_opened_closed_trigger_states(
|
||||||
trigger: str,
|
trigger: str,
|
||||||
trigger_options: dict,
|
trigger_options: dict,
|
||||||
|
device_class: str,
|
||||||
target_state: tuple[str, dict],
|
target_state: tuple[str, dict],
|
||||||
other_state: tuple[str, dict],
|
other_state: tuple[str, dict],
|
||||||
) -> list[
|
) -> list[
|
||||||
@@ -75,8 +76,9 @@ def parametrize_opened_closed_trigger_states(
|
|||||||
]:
|
]:
|
||||||
"""Parametrize states and expected service call counts.
|
"""Parametrize states and expected service call counts.
|
||||||
|
|
||||||
Returns a list of tuples with (trigger, trigger_options, initial_state, list of states),
|
Returns a list of tuples with (trigger, trigger_options, device_class,
|
||||||
where states is a list of tuples (state to set, expected service call count).
|
initial_state, list of states), where states is a list of tuples
|
||||||
|
(state to set, expected service call count).
|
||||||
"""
|
"""
|
||||||
return [
|
return [
|
||||||
## TODO: Check what happens if attribute is missing
|
## TODO: Check what happens if attribute is missing
|
||||||
@@ -84,6 +86,7 @@ def parametrize_opened_closed_trigger_states(
|
|||||||
(
|
(
|
||||||
trigger,
|
trigger,
|
||||||
trigger_options,
|
trigger_options,
|
||||||
|
device_class,
|
||||||
(None, {}),
|
(None, {}),
|
||||||
[
|
[
|
||||||
(target_state, 0),
|
(target_state, 0),
|
||||||
@@ -98,6 +101,7 @@ def parametrize_opened_closed_trigger_states(
|
|||||||
(
|
(
|
||||||
trigger,
|
trigger,
|
||||||
trigger_options,
|
trigger_options,
|
||||||
|
device_class,
|
||||||
other_state,
|
other_state,
|
||||||
[
|
[
|
||||||
(target_state, 1),
|
(target_state, 1),
|
||||||
@@ -109,6 +113,7 @@ def parametrize_opened_closed_trigger_states(
|
|||||||
(
|
(
|
||||||
trigger,
|
trigger,
|
||||||
trigger_options,
|
trigger_options,
|
||||||
|
device_class,
|
||||||
target_state,
|
target_state,
|
||||||
[
|
[
|
||||||
(target_state, 0),
|
(target_state, 0),
|
||||||
@@ -120,6 +125,7 @@ def parametrize_opened_closed_trigger_states(
|
|||||||
(
|
(
|
||||||
trigger,
|
trigger,
|
||||||
trigger_options,
|
trigger_options,
|
||||||
|
device_class,
|
||||||
(STATE_UNAVAILABLE, {}),
|
(STATE_UNAVAILABLE, {}),
|
||||||
[
|
[
|
||||||
(target_state, 0),
|
(target_state, 0),
|
||||||
@@ -130,6 +136,7 @@ def parametrize_opened_closed_trigger_states(
|
|||||||
(
|
(
|
||||||
trigger,
|
trigger,
|
||||||
trigger_options,
|
trigger_options,
|
||||||
|
device_class,
|
||||||
(STATE_UNKNOWN, {}),
|
(STATE_UNKNOWN, {}),
|
||||||
[
|
[
|
||||||
(target_state, 0),
|
(target_state, 0),
|
||||||
@@ -140,62 +147,73 @@ def parametrize_opened_closed_trigger_states(
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def parametrize_opened_trigger_states() -> list[
|
def parametrize_opened_trigger_states(
|
||||||
|
trigger: str, device_class: str
|
||||||
|
) -> list[
|
||||||
tuple[str, tuple[str | None, dict], list[tuple[tuple[str | None, dict], int]]]
|
tuple[str, tuple[str | None, dict], list[tuple[tuple[str | None, dict], int]]]
|
||||||
]:
|
]:
|
||||||
"""Parametrize states and expected service call counts.
|
"""Parametrize states and expected service call counts.
|
||||||
|
|
||||||
Returns a list of tuples with (trigger, trigger_options, initial_state, list of states),
|
Returns a list of tuples with (trigger, trigger_options, device_class,
|
||||||
where states is a list of tuples (state to set, expected service call count).
|
initial_state, list of states), where states is a list of tuples
|
||||||
|
(state to set, expected service call count).
|
||||||
"""
|
"""
|
||||||
return [
|
return [
|
||||||
# States without current position attribute
|
# States without current position attribute
|
||||||
*parametrize_opened_closed_trigger_states(
|
*parametrize_opened_closed_trigger_states(
|
||||||
"cover.garage_opened",
|
trigger,
|
||||||
{"fully_opened": True},
|
{"fully_opened": True},
|
||||||
|
device_class,
|
||||||
(CoverState.OPEN, {}),
|
(CoverState.OPEN, {}),
|
||||||
(CoverState.CLOSED, {}),
|
(CoverState.CLOSED, {}),
|
||||||
),
|
),
|
||||||
*parametrize_opened_closed_trigger_states(
|
*parametrize_opened_closed_trigger_states(
|
||||||
"cover.garage_opened",
|
trigger,
|
||||||
{"fully_opened": True},
|
{"fully_opened": True},
|
||||||
|
device_class,
|
||||||
(CoverState.OPENING, {}),
|
(CoverState.OPENING, {}),
|
||||||
(CoverState.CLOSED, {}),
|
(CoverState.CLOSED, {}),
|
||||||
),
|
),
|
||||||
*parametrize_opened_closed_trigger_states(
|
*parametrize_opened_closed_trigger_states(
|
||||||
"cover.garage_opened",
|
trigger,
|
||||||
{},
|
{},
|
||||||
|
device_class,
|
||||||
(CoverState.OPEN, {}),
|
(CoverState.OPEN, {}),
|
||||||
(CoverState.CLOSED, {}),
|
(CoverState.CLOSED, {}),
|
||||||
),
|
),
|
||||||
*parametrize_opened_closed_trigger_states(
|
*parametrize_opened_closed_trigger_states(
|
||||||
"cover.garage_opened",
|
trigger,
|
||||||
{},
|
{},
|
||||||
|
device_class,
|
||||||
(CoverState.OPENING, {}),
|
(CoverState.OPENING, {}),
|
||||||
(CoverState.CLOSED, {}),
|
(CoverState.CLOSED, {}),
|
||||||
),
|
),
|
||||||
# States with current position attribute
|
# States with current position attribute
|
||||||
*parametrize_opened_closed_trigger_states(
|
*parametrize_opened_closed_trigger_states(
|
||||||
"cover.garage_opened",
|
trigger,
|
||||||
{"fully_opened": True},
|
{"fully_opened": True},
|
||||||
|
device_class,
|
||||||
(CoverState.OPEN, {ATTR_CURRENT_POSITION: 100}),
|
(CoverState.OPEN, {ATTR_CURRENT_POSITION: 100}),
|
||||||
(CoverState.OPEN, {ATTR_CURRENT_POSITION: 0}),
|
(CoverState.OPEN, {ATTR_CURRENT_POSITION: 0}),
|
||||||
),
|
),
|
||||||
*parametrize_opened_closed_trigger_states(
|
*parametrize_opened_closed_trigger_states(
|
||||||
"cover.garage_opened",
|
trigger,
|
||||||
{"fully_opened": True},
|
{"fully_opened": True},
|
||||||
|
device_class,
|
||||||
(CoverState.OPENING, {ATTR_CURRENT_POSITION: 100}),
|
(CoverState.OPENING, {ATTR_CURRENT_POSITION: 100}),
|
||||||
(CoverState.OPENING, {ATTR_CURRENT_POSITION: 0}),
|
(CoverState.OPENING, {ATTR_CURRENT_POSITION: 0}),
|
||||||
),
|
),
|
||||||
*parametrize_opened_closed_trigger_states(
|
*parametrize_opened_closed_trigger_states(
|
||||||
"cover.garage_opened",
|
trigger,
|
||||||
{},
|
{},
|
||||||
|
device_class,
|
||||||
(CoverState.OPEN, {ATTR_CURRENT_POSITION: 1}),
|
(CoverState.OPEN, {ATTR_CURRENT_POSITION: 1}),
|
||||||
(CoverState.CLOSED, {ATTR_CURRENT_POSITION: 0}),
|
(CoverState.CLOSED, {ATTR_CURRENT_POSITION: 0}),
|
||||||
),
|
),
|
||||||
*parametrize_opened_closed_trigger_states(
|
*parametrize_opened_closed_trigger_states(
|
||||||
"cover.garage_opened",
|
trigger,
|
||||||
{},
|
{},
|
||||||
|
device_class,
|
||||||
(CoverState.OPENING, {ATTR_CURRENT_POSITION: 1}),
|
(CoverState.OPENING, {ATTR_CURRENT_POSITION: 1}),
|
||||||
(CoverState.CLOSED, {ATTR_CURRENT_POSITION: 0}),
|
(CoverState.CLOSED, {ATTR_CURRENT_POSITION: 0}),
|
||||||
),
|
),
|
||||||
@@ -207,13 +225,14 @@ def parametrize_opened_trigger_states() -> list[
|
|||||||
parametrize_target_entities("cover"),
|
parametrize_target_entities("cover"),
|
||||||
)
|
)
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("trigger", "trigger_options", "initial_state", "states"),
|
("trigger", "trigger_options", "device_class", "initial_state", "states"),
|
||||||
[
|
[
|
||||||
*parametrize_opened_trigger_states(),
|
*parametrize_opened_trigger_states("cover.garage_opened", "garage"),
|
||||||
# No initial state attribute.
|
# No initial state attribute.
|
||||||
(
|
(
|
||||||
"cover.garage_opened",
|
"cover.garage_opened",
|
||||||
{"fully_opened": True},
|
{"fully_opened": True},
|
||||||
|
"garage",
|
||||||
(CoverState.OPEN, {}),
|
(CoverState.OPEN, {}),
|
||||||
[
|
[
|
||||||
((CoverState.OPEN, {ATTR_CURRENT_POSITION: 100}), 1),
|
((CoverState.OPEN, {ATTR_CURRENT_POSITION: 100}), 1),
|
||||||
@@ -232,6 +251,7 @@ async def test_cover_state_attribute_trigger_behavior_any(
|
|||||||
entities_in_target: int,
|
entities_in_target: int,
|
||||||
trigger: str,
|
trigger: str,
|
||||||
trigger_options: dict,
|
trigger_options: dict,
|
||||||
|
device_class: str,
|
||||||
initial_state: tuple[str | None, dict],
|
initial_state: tuple[str | None, dict],
|
||||||
states: list[tuple[tuple[str, dict], int]],
|
states: list[tuple[tuple[str, dict], int]],
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -274,9 +294,9 @@ async def test_cover_state_attribute_trigger_behavior_any(
|
|||||||
parametrize_target_entities("cover"),
|
parametrize_target_entities("cover"),
|
||||||
)
|
)
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("trigger", "trigger_options", "initial_state", "states"),
|
("trigger", "trigger_options", "device_class", "initial_state", "states"),
|
||||||
[
|
[
|
||||||
*parametrize_opened_trigger_states(),
|
*parametrize_opened_trigger_states("cover.garage_opened", "garage"),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_cover_state_attribute_trigger_behavior_first(
|
async def test_cover_state_attribute_trigger_behavior_first(
|
||||||
@@ -288,6 +308,7 @@ async def test_cover_state_attribute_trigger_behavior_first(
|
|||||||
entities_in_target: int,
|
entities_in_target: int,
|
||||||
trigger: str,
|
trigger: str,
|
||||||
trigger_options: dict,
|
trigger_options: dict,
|
||||||
|
device_class: str,
|
||||||
initial_state: tuple[str | None, dict],
|
initial_state: tuple[str | None, dict],
|
||||||
states: list[tuple[tuple[str, dict], int]],
|
states: list[tuple[tuple[str, dict], int]],
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -334,9 +355,9 @@ async def test_cover_state_attribute_trigger_behavior_first(
|
|||||||
parametrize_target_entities("cover"),
|
parametrize_target_entities("cover"),
|
||||||
)
|
)
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("trigger", "trigger_options", "initial_state", "states"),
|
("trigger", "trigger_options", "device_class", "initial_state", "states"),
|
||||||
[
|
[
|
||||||
*parametrize_opened_trigger_states(),
|
*parametrize_opened_trigger_states("cover.garage_opened", "garage"),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_cover_state_attribute_trigger_behavior_last(
|
async def test_cover_state_attribute_trigger_behavior_last(
|
||||||
@@ -348,6 +369,7 @@ async def test_cover_state_attribute_trigger_behavior_last(
|
|||||||
entities_in_target: int,
|
entities_in_target: int,
|
||||||
trigger: str,
|
trigger: str,
|
||||||
trigger_options: dict,
|
trigger_options: dict,
|
||||||
|
device_class: str,
|
||||||
initial_state: tuple[str | None, dict],
|
initial_state: tuple[str | None, dict],
|
||||||
states: list[tuple[tuple[str, dict], int]],
|
states: list[tuple[tuple[str, dict], int]],
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user