Add basic tests for powerview scenes (#108818)
This commit is contained in:
parent
c01e8288c1
commit
0628546a0e
5 changed files with 114 additions and 2 deletions
|
@ -1 +1,3 @@
|
|||
"""Tests for the Hunter Douglas PowerView integration."""
|
||||
|
||||
MOCK_MAC = "AA::BB::CC::DD::EE::FF"
|
||||
|
|
47
tests/components/hunterdouglas_powerview/conftest.py
Normal file
47
tests/components/hunterdouglas_powerview/conftest.py
Normal file
|
@ -0,0 +1,47 @@
|
|||
"""Tests for the Hunter Douglas PowerView integration."""
|
||||
import json
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
|
||||
from tests.common import load_fixture
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def powerview_userdata():
|
||||
"""Return the userdata fixture."""
|
||||
return json.loads(load_fixture("hunterdouglas_powerview/userdata.json"))
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def powerview_fwversion():
|
||||
"""Return the fwversion fixture."""
|
||||
return json.loads(load_fixture("hunterdouglas_powerview/fwversion.json"))
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def powerview_scenes():
|
||||
"""Return the scenes fixture."""
|
||||
return json.loads(load_fixture("hunterdouglas_powerview/scenes.json"))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mock_powerview_v2_hub(powerview_userdata, powerview_fwversion, powerview_scenes):
|
||||
"""Mock a Powerview v2 hub."""
|
||||
with patch(
|
||||
"homeassistant.components.hunterdouglas_powerview.UserData.get_resources",
|
||||
return_value=powerview_userdata,
|
||||
), patch(
|
||||
"homeassistant.components.hunterdouglas_powerview.Rooms.get_resources",
|
||||
return_value={"roomData": []},
|
||||
), patch(
|
||||
"homeassistant.components.hunterdouglas_powerview.Scenes.get_resources",
|
||||
return_value=powerview_scenes,
|
||||
), patch(
|
||||
"homeassistant.components.hunterdouglas_powerview.Shades.get_resources",
|
||||
return_value={"shadeData": []},
|
||||
), patch(
|
||||
"homeassistant.components.hunterdouglas_powerview.ApiEntryPoint",
|
||||
return_value=powerview_fwversion,
|
||||
):
|
||||
yield
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"sceneIds": [46274, 21015],
|
||||
"sceneData": [
|
||||
{
|
||||
"roomId": 12538,
|
||||
"name": "one",
|
||||
"colorId": 12,
|
||||
"iconId": 0,
|
||||
"networkNumber": 250,
|
||||
"id": 46274,
|
||||
"order": 0,
|
||||
"hkAssist": false
|
||||
},
|
||||
{
|
||||
"roomId": 12538,
|
||||
"name": "two",
|
||||
"colorId": 14,
|
||||
"iconId": 0,
|
||||
"networkNumber": 231,
|
||||
"id": 21015,
|
||||
"order": 1,
|
||||
"hkAssist": false
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
"""Test the Logitech Harmony Hub config flow."""
|
||||
"""Test the Hunter Douglas Powerview config flow."""
|
||||
import asyncio
|
||||
from ipaddress import ip_address
|
||||
import json
|
||||
|
@ -11,6 +11,8 @@ from homeassistant.components import dhcp, zeroconf
|
|||
from homeassistant.components.hunterdouglas_powerview.const import DOMAIN
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from . import MOCK_MAC
|
||||
|
||||
from tests.common import MockConfigEntry, load_fixture
|
||||
|
||||
ZEROCONF_HOST = "1.2.3.4"
|
||||
|
@ -20,7 +22,7 @@ HOMEKIT_DISCOVERY_INFO = zeroconf.ZeroconfServiceInfo(
|
|||
hostname="mock_hostname",
|
||||
name="Hunter Douglas Powerview Hub._hap._tcp.local.",
|
||||
port=None,
|
||||
properties={zeroconf.ATTR_PROPERTIES_ID: "AA::BB::CC::DD::EE::FF"},
|
||||
properties={zeroconf.ATTR_PROPERTIES_ID: MOCK_MAC},
|
||||
type="mock_type",
|
||||
)
|
||||
|
||||
|
|
36
tests/components/hunterdouglas_powerview/test_scene.py
Normal file
36
tests/components/hunterdouglas_powerview/test_scene.py
Normal file
|
@ -0,0 +1,36 @@
|
|||
"""Test the Hunter Douglas Powerview scene platform."""
|
||||
from unittest.mock import patch
|
||||
|
||||
from homeassistant.components.hunterdouglas_powerview.const import DOMAIN
|
||||
from homeassistant.components.scene import DOMAIN as SCENE_DOMAIN, SERVICE_TURN_ON
|
||||
from homeassistant.const import STATE_UNKNOWN
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from . import MOCK_MAC
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
|
||||
|
||||
async def test_scenes(hass: HomeAssistant, mock_powerview_v2_hub: None) -> None:
|
||||
"""Test the scenes."""
|
||||
entry = MockConfigEntry(domain=DOMAIN, data={"host": "1.2.3.4"}, unique_id=MOCK_MAC)
|
||||
entry.add_to_hass(hass)
|
||||
await hass.config_entries.async_setup(entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert len(hass.states.async_all()) == 2
|
||||
assert hass.states.get("scene.alexanderhd_one").state == STATE_UNKNOWN
|
||||
assert hass.states.get("scene.alexanderhd_two").state == STATE_UNKNOWN
|
||||
|
||||
with patch(
|
||||
"homeassistant.components.hunterdouglas_powerview.scene.PvScene.activate"
|
||||
) as mock_activate:
|
||||
await hass.services.async_call(
|
||||
SCENE_DOMAIN,
|
||||
SERVICE_TURN_ON,
|
||||
{"entity_id": "scene.alexanderhd_one"},
|
||||
blocking=True,
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
mock_activate.assert_called_once()
|
Loading…
Add table
Reference in a new issue