Make some device action tests more explicit (#59469)

* Make some device action tests more explicit

* Adjust tests
This commit is contained in:
Erik Montnemery 2021-11-11 12:32:51 +01:00 committed by GitHub
parent 731bec3145
commit 85786fd987
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 51 additions and 12 deletions

View file

@ -160,6 +160,7 @@ async def test_get_action_capabilities(
} }
actions = await async_get_device_automations(hass, "action", device_entry.id) actions = await async_get_device_automations(hass, "action", device_entry.id)
assert len(actions) == 6 assert len(actions) == 6
assert {action["type"] for action in actions} == set(expected_capabilities)
for action in actions: for action in actions:
capabilities = await async_get_device_automation_capabilities( capabilities = await async_get_device_automation_capabilities(
hass, "action", action hass, "action", action
@ -209,6 +210,7 @@ async def test_get_action_capabilities_arm_code(
} }
actions = await async_get_device_automations(hass, "action", device_entry.id) actions = await async_get_device_automations(hass, "action", device_entry.id)
assert len(actions) == 6 assert len(actions) == 6
assert {action["type"] for action in actions} == set(expected_capabilities)
for action in actions: for action in actions:
capabilities = await async_get_device_automation_capabilities( capabilities = await async_get_device_automation_capabilities(
hass, "action", action hass, "action", action

View file

@ -11,6 +11,7 @@ from homeassistant.components.cover import (
SUPPORT_SET_POSITION, SUPPORT_SET_POSITION,
SUPPORT_SET_TILT_POSITION, SUPPORT_SET_TILT_POSITION,
SUPPORT_STOP, SUPPORT_STOP,
SUPPORT_STOP_TILT,
) )
from homeassistant.const import CONF_PLATFORM from homeassistant.const import CONF_PLATFORM
from homeassistant.helpers import device_registry from homeassistant.helpers import device_registry
@ -109,8 +110,22 @@ async def test_get_action_capabilities(
): ):
"""Test we get the expected capabilities from a cover action.""" """Test we get the expected capabilities from a cover action."""
platform = getattr(hass.components, f"test.{DOMAIN}") platform = getattr(hass.components, f"test.{DOMAIN}")
platform.init() platform.init(empty=True)
ent = platform.ENTITIES[2] platform.ENTITIES.append(
platform.MockCover(
name="Set position cover",
is_on=True,
unique_id="unique_set_pos_cover",
current_cover_position=50,
supported_features=SUPPORT_OPEN
| SUPPORT_CLOSE
| SUPPORT_STOP
| SUPPORT_OPEN_TILT
| SUPPORT_CLOSE_TILT
| SUPPORT_STOP_TILT,
),
)
ent = platform.ENTITIES[0]
config_entry = MockConfigEntry(domain="test", data={}) config_entry = MockConfigEntry(domain="test", data={})
config_entry.add_to_hass(hass) config_entry.add_to_hass(hass)
@ -126,7 +141,9 @@ async def test_get_action_capabilities(
await hass.async_block_till_done() await hass.async_block_till_done()
actions = await async_get_device_automations(hass, "action", device_entry.id) actions = await async_get_device_automations(hass, "action", device_entry.id)
assert len(actions) == 4 # open, close, stop, set_position assert len(actions) == 5 # open, close, open_tilt, close_tilt
action_types = {action["type"] for action in actions}
assert action_types == {"open", "close", "stop", "open_tilt", "close_tilt"}
for action in actions: for action in actions:
capabilities = await async_get_device_automation_capabilities( capabilities = await async_get_device_automation_capabilities(
hass, "action", action hass, "action", action
@ -169,6 +186,8 @@ async def test_get_action_capabilities_set_pos(
} }
actions = await async_get_device_automations(hass, "action", device_entry.id) actions = await async_get_device_automations(hass, "action", device_entry.id)
assert len(actions) == 1 # set_position assert len(actions) == 1 # set_position
action_types = {action["type"] for action in actions}
assert action_types == {"set_position"}
for action in actions: for action in actions:
capabilities = await async_get_device_automation_capabilities( capabilities = await async_get_device_automation_capabilities(
hass, "action", action hass, "action", action
@ -185,7 +204,7 @@ async def test_get_action_capabilities_set_tilt_pos(
"""Test we get the expected capabilities from a cover action.""" """Test we get the expected capabilities from a cover action."""
platform = getattr(hass.components, f"test.{DOMAIN}") platform = getattr(hass.components, f"test.{DOMAIN}")
platform.init() platform.init()
ent = platform.ENTITIES[2] ent = platform.ENTITIES[3]
config_entry = MockConfigEntry(domain="test", data={}) config_entry = MockConfigEntry(domain="test", data={})
config_entry.add_to_hass(hass) config_entry.add_to_hass(hass)
@ -213,7 +232,9 @@ async def test_get_action_capabilities_set_tilt_pos(
] ]
} }
actions = await async_get_device_automations(hass, "action", device_entry.id) actions = await async_get_device_automations(hass, "action", device_entry.id)
assert len(actions) == 4 # open, close, stop, set_tilt_position assert len(actions) == 3
action_types = {action["type"] for action in actions}
assert action_types == {"open", "close", "set_tilt_position"}
for action in actions: for action in actions:
capabilities = await async_get_device_automation_capabilities( capabilities = await async_get_device_automation_capabilities(
hass, "action", action hass, "action", action

View file

@ -118,6 +118,8 @@ async def test_get_action_capabilities(hass, device_reg, entity_reg):
).entity_id ).entity_id
actions = await async_get_device_automations(hass, "action", device_entry.id) actions = await async_get_device_automations(hass, "action", device_entry.id)
assert len(actions) == 3 assert len(actions) == 3
action_types = {action["type"] for action in actions}
assert action_types == {"turn_on", "toggle", "turn_off"}
for action in actions: for action in actions:
capabilities = await async_get_device_automation_capabilities( capabilities = await async_get_device_automation_capabilities(
hass, "action", action hass, "action", action
@ -134,11 +136,17 @@ async def test_get_action_capabilities(hass, device_reg, entity_reg):
@pytest.mark.parametrize( @pytest.mark.parametrize(
"set_state,num_actions,supported_features_reg,supported_features_state,capabilities_reg,attributes_state,expected_capabilities", "set_state,expected_actions,supported_features_reg,supported_features_state,capabilities_reg,attributes_state,expected_capabilities",
[ [
( (
False, False,
5, {
"turn_on",
"toggle",
"turn_off",
"brightness_increase",
"brightness_decrease",
},
0, 0,
0, 0,
{ATTR_SUPPORTED_COLOR_MODES: [COLOR_MODE_BRIGHTNESS]}, {ATTR_SUPPORTED_COLOR_MODES: [COLOR_MODE_BRIGHTNESS]},
@ -157,7 +165,13 @@ async def test_get_action_capabilities(hass, device_reg, entity_reg):
), ),
( (
True, True,
5, {
"turn_on",
"toggle",
"turn_off",
"brightness_increase",
"brightness_decrease",
},
0, 0,
0, 0,
None, None,
@ -176,7 +190,7 @@ async def test_get_action_capabilities(hass, device_reg, entity_reg):
), ),
( (
False, False,
4, {"turn_on", "toggle", "turn_off", "flash"},
SUPPORT_FLASH, SUPPORT_FLASH,
0, 0,
None, None,
@ -194,7 +208,7 @@ async def test_get_action_capabilities(hass, device_reg, entity_reg):
), ),
( (
True, True,
4, {"turn_on", "toggle", "turn_off", "flash"},
0, 0,
SUPPORT_FLASH, SUPPORT_FLASH,
None, None,
@ -217,7 +231,7 @@ async def test_get_action_capabilities_features(
device_reg, device_reg,
entity_reg, entity_reg,
set_state, set_state,
num_actions, expected_actions,
supported_features_reg, supported_features_reg,
supported_features_state, supported_features_state,
capabilities_reg, capabilities_reg,
@ -247,7 +261,9 @@ async def test_get_action_capabilities_features(
) )
actions = await async_get_device_automations(hass, "action", device_entry.id) actions = await async_get_device_automations(hass, "action", device_entry.id)
assert len(actions) == num_actions assert len(actions) == len(expected_actions)
action_types = {action["type"] for action in actions}
assert action_types == expected_actions
for action in actions: for action in actions:
capabilities = await async_get_device_automation_capabilities( capabilities = await async_get_device_automation_capabilities(
hass, "action", action hass, "action", action