Add type hints in samsungtv tests (#66632)
Co-authored-by: epenet <epenet@users.noreply.github.com>
This commit is contained in:
parent
44befe5f11
commit
6d0a06c57a
4 changed files with 185 additions and 119 deletions
|
@ -1,4 +1,5 @@
|
||||||
"""Fixtures for Samsung TV."""
|
"""Fixtures for Samsung TV."""
|
||||||
|
from datetime import datetime
|
||||||
from unittest.mock import Mock, patch
|
from unittest.mock import Mock, patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
@ -19,7 +20,7 @@ def fake_host_fixture() -> None:
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="remote")
|
@pytest.fixture(name="remote")
|
||||||
def remote_fixture():
|
def remote_fixture() -> Mock:
|
||||||
"""Patch the samsungctl Remote."""
|
"""Patch the samsungctl Remote."""
|
||||||
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote_class:
|
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote_class:
|
||||||
remote = Mock(Remote)
|
remote = Mock(Remote)
|
||||||
|
@ -30,7 +31,7 @@ def remote_fixture():
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="remotews")
|
@pytest.fixture(name="remotews")
|
||||||
def remotews_fixture():
|
def remotews_fixture() -> Mock:
|
||||||
"""Patch the samsungtvws SamsungTVWS."""
|
"""Patch the samsungtvws SamsungTVWS."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.SamsungTVWS"
|
"homeassistant.components.samsungtv.bridge.SamsungTVWS"
|
||||||
|
@ -54,7 +55,7 @@ def remotews_fixture():
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="remotews_no_device_info")
|
@pytest.fixture(name="remotews_no_device_info")
|
||||||
def remotews_no_device_info_fixture():
|
def remotews_no_device_info_fixture() -> Mock:
|
||||||
"""Patch the samsungtvws SamsungTVWS."""
|
"""Patch the samsungtvws SamsungTVWS."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.SamsungTVWS"
|
"homeassistant.components.samsungtv.bridge.SamsungTVWS"
|
||||||
|
@ -69,7 +70,7 @@ def remotews_no_device_info_fixture():
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="remotews_soundbar")
|
@pytest.fixture(name="remotews_soundbar")
|
||||||
def remotews_soundbar_fixture():
|
def remotews_soundbar_fixture() -> Mock:
|
||||||
"""Patch the samsungtvws SamsungTVWS."""
|
"""Patch the samsungtvws SamsungTVWS."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.SamsungTVWS"
|
"homeassistant.components.samsungtv.bridge.SamsungTVWS"
|
||||||
|
@ -93,7 +94,7 @@ def remotews_soundbar_fixture():
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="delay")
|
@pytest.fixture(name="delay")
|
||||||
def delay_fixture():
|
def delay_fixture() -> Mock:
|
||||||
"""Patch the delay script function."""
|
"""Patch the delay script function."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.media_player.Script.async_run"
|
"homeassistant.components.samsungtv.media_player.Script.async_run"
|
||||||
|
@ -102,13 +103,13 @@ def delay_fixture():
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mock_now():
|
def mock_now() -> datetime:
|
||||||
"""Fixture for dtutil.now."""
|
"""Fixture for dtutil.now."""
|
||||||
return dt_util.utcnow()
|
return dt_util.utcnow()
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(name="no_mac_address")
|
@pytest.fixture(name="no_mac_address")
|
||||||
def mac_address_fixture():
|
def mac_address_fixture() -> Mock:
|
||||||
"""Patch getmac.get_mac_address."""
|
"""Patch getmac.get_mac_address."""
|
||||||
with patch("getmac.get_mac_address", return_value=None) as mac:
|
with patch("getmac.get_mac_address", return_value=None) as mac:
|
||||||
yield mac
|
yield mac
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
import socket
|
import socket
|
||||||
from unittest.mock import Mock, call, patch
|
from unittest.mock import Mock, call, patch
|
||||||
|
|
||||||
|
import pytest
|
||||||
from samsungctl.exceptions import AccessDenied, UnhandledResponse
|
from samsungctl.exceptions import AccessDenied, UnhandledResponse
|
||||||
from samsungtvws import SamsungTVWS
|
from samsungtvws import SamsungTVWS
|
||||||
from samsungtvws.exceptions import ConnectionFailure, HttpApiError
|
from samsungtvws.exceptions import ConnectionFailure, HttpApiError
|
||||||
|
@ -182,7 +183,8 @@ DEVICEINFO_WEBSOCKET_SSL = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async def test_user_legacy(hass: HomeAssistant, remote: Mock):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_user_legacy(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow by user."""
|
"""Test starting a flow by user."""
|
||||||
# show form
|
# show form
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
|
@ -206,7 +208,8 @@ async def test_user_legacy(hass: HomeAssistant, remote: Mock):
|
||||||
assert result["result"].unique_id is None
|
assert result["result"].unique_id is None
|
||||||
|
|
||||||
|
|
||||||
async def test_user_websocket(hass: HomeAssistant, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_user_websocket(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow by user."""
|
"""Test starting a flow by user."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote", side_effect=OSError("Boom")
|
"homeassistant.components.samsungtv.bridge.Remote", side_effect=OSError("Boom")
|
||||||
|
@ -233,7 +236,8 @@ async def test_user_websocket(hass: HomeAssistant, remotews: Mock):
|
||||||
assert result["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
assert result["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
||||||
|
|
||||||
|
|
||||||
async def test_user_legacy_missing_auth(hass: HomeAssistant, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_user_legacy_missing_auth(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow by user with authentication."""
|
"""Test starting a flow by user with authentication."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -247,7 +251,7 @@ async def test_user_legacy_missing_auth(hass: HomeAssistant, remotews: Mock):
|
||||||
assert result["reason"] == RESULT_AUTH_MISSING
|
assert result["reason"] == RESULT_AUTH_MISSING
|
||||||
|
|
||||||
|
|
||||||
async def test_user_legacy_not_supported(hass: HomeAssistant):
|
async def test_user_legacy_not_supported(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow by user for not supported device."""
|
"""Test starting a flow by user for not supported device."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -261,7 +265,7 @@ async def test_user_legacy_not_supported(hass: HomeAssistant):
|
||||||
assert result["reason"] == RESULT_NOT_SUPPORTED
|
assert result["reason"] == RESULT_NOT_SUPPORTED
|
||||||
|
|
||||||
|
|
||||||
async def test_user_websocket_not_supported(hass: HomeAssistant):
|
async def test_user_websocket_not_supported(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow by user for not supported device."""
|
"""Test starting a flow by user for not supported device."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -278,7 +282,7 @@ async def test_user_websocket_not_supported(hass: HomeAssistant):
|
||||||
assert result["reason"] == RESULT_NOT_SUPPORTED
|
assert result["reason"] == RESULT_NOT_SUPPORTED
|
||||||
|
|
||||||
|
|
||||||
async def test_user_not_successful(hass: HomeAssistant):
|
async def test_user_not_successful(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow by user but no connection found."""
|
"""Test starting a flow by user but no connection found."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -294,7 +298,7 @@ async def test_user_not_successful(hass: HomeAssistant):
|
||||||
assert result["reason"] == RESULT_CANNOT_CONNECT
|
assert result["reason"] == RESULT_CANNOT_CONNECT
|
||||||
|
|
||||||
|
|
||||||
async def test_user_not_successful_2(hass: HomeAssistant):
|
async def test_user_not_successful_2(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow by user but no connection found."""
|
"""Test starting a flow by user but no connection found."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -310,7 +314,8 @@ async def test_user_not_successful_2(hass: HomeAssistant):
|
||||||
assert result["reason"] == RESULT_CANNOT_CONNECT
|
assert result["reason"] == RESULT_CANNOT_CONNECT
|
||||||
|
|
||||||
|
|
||||||
async def test_ssdp(hass: HomeAssistant, remote: Mock, no_mac_address: Mock):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_ssdp(hass: HomeAssistant, no_mac_address: Mock) -> None:
|
||||||
"""Test starting a flow from discovery."""
|
"""Test starting a flow from discovery."""
|
||||||
|
|
||||||
no_mac_address.return_value = "aa:bb:cc:dd:ee:ff"
|
no_mac_address.return_value = "aa:bb:cc:dd:ee:ff"
|
||||||
|
@ -338,7 +343,8 @@ async def test_ssdp(hass: HomeAssistant, remote: Mock, no_mac_address: Mock):
|
||||||
assert result["result"].unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
assert result["result"].unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
||||||
|
|
||||||
|
|
||||||
async def test_ssdp_noprefix(hass: HomeAssistant, remote: Mock, no_mac_address: Mock):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_ssdp_noprefix(hass: HomeAssistant, no_mac_address: Mock) -> None:
|
||||||
"""Test starting a flow from discovery without prefixes."""
|
"""Test starting a flow from discovery without prefixes."""
|
||||||
|
|
||||||
no_mac_address.return_value = "aa:bb:cc:dd:ee:ff"
|
no_mac_address.return_value = "aa:bb:cc:dd:ee:ff"
|
||||||
|
@ -373,7 +379,8 @@ async def test_ssdp_noprefix(hass: HomeAssistant, remote: Mock, no_mac_address:
|
||||||
assert result["result"].unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172df"
|
assert result["result"].unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172df"
|
||||||
|
|
||||||
|
|
||||||
async def test_ssdp_legacy_missing_auth(hass: HomeAssistant, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_ssdp_legacy_missing_auth(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from discovery with authentication."""
|
"""Test starting a flow from discovery with authentication."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -400,9 +407,8 @@ async def test_ssdp_legacy_missing_auth(hass: HomeAssistant, remotews: Mock):
|
||||||
assert result["reason"] == RESULT_AUTH_MISSING
|
assert result["reason"] == RESULT_AUTH_MISSING
|
||||||
|
|
||||||
|
|
||||||
async def test_ssdp_legacy_not_supported(
|
@pytest.mark.usefixtures("remote", "remotews")
|
||||||
hass: HomeAssistant, remote: Mock, remotews: Mock
|
async def test_ssdp_legacy_not_supported(hass: HomeAssistant) -> None:
|
||||||
):
|
|
||||||
"""Test starting a flow from discovery for not supported device."""
|
"""Test starting a flow from discovery for not supported device."""
|
||||||
|
|
||||||
# confirm to add the entry
|
# confirm to add the entry
|
||||||
|
@ -424,11 +430,10 @@ async def test_ssdp_legacy_not_supported(
|
||||||
assert result["reason"] == RESULT_NOT_SUPPORTED
|
assert result["reason"] == RESULT_NOT_SUPPORTED
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("remote", "remotews")
|
||||||
async def test_ssdp_websocket_success_populates_mac_address(
|
async def test_ssdp_websocket_success_populates_mac_address(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
remote: Mock,
|
) -> None:
|
||||||
remotews: Mock,
|
|
||||||
):
|
|
||||||
"""Test starting a flow from ssdp for a supported device populates the mac."""
|
"""Test starting a flow from ssdp for a supported device populates the mac."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN, context={"source": config_entries.SOURCE_SSDP}, data=MOCK_SSDP_DATA
|
DOMAIN, context={"source": config_entries.SOURCE_SSDP}, data=MOCK_SSDP_DATA
|
||||||
|
@ -449,7 +454,7 @@ async def test_ssdp_websocket_success_populates_mac_address(
|
||||||
assert result["result"].unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
assert result["result"].unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
||||||
|
|
||||||
|
|
||||||
async def test_ssdp_websocket_not_supported(hass: HomeAssistant):
|
async def test_ssdp_websocket_not_supported(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from discovery for not supported device."""
|
"""Test starting a flow from discovery for not supported device."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -467,7 +472,8 @@ async def test_ssdp_websocket_not_supported(hass: HomeAssistant):
|
||||||
assert result["reason"] == RESULT_NOT_SUPPORTED
|
assert result["reason"] == RESULT_NOT_SUPPORTED
|
||||||
|
|
||||||
|
|
||||||
async def test_ssdp_model_not_supported(hass: HomeAssistant, remote: Mock):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_ssdp_model_not_supported(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from discovery."""
|
"""Test starting a flow from discovery."""
|
||||||
|
|
||||||
# confirm to add the entry
|
# confirm to add the entry
|
||||||
|
@ -480,7 +486,8 @@ async def test_ssdp_model_not_supported(hass: HomeAssistant, remote: Mock):
|
||||||
assert result["reason"] == RESULT_NOT_SUPPORTED
|
assert result["reason"] == RESULT_NOT_SUPPORTED
|
||||||
|
|
||||||
|
|
||||||
async def test_ssdp_not_successful(hass: HomeAssistant, no_mac_address: Mock):
|
@pytest.mark.usefixtures("no_mac_address")
|
||||||
|
async def test_ssdp_not_successful(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from discovery but no device found."""
|
"""Test starting a flow from discovery but no device found."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -508,7 +515,8 @@ async def test_ssdp_not_successful(hass: HomeAssistant, no_mac_address: Mock):
|
||||||
assert result["reason"] == RESULT_CANNOT_CONNECT
|
assert result["reason"] == RESULT_CANNOT_CONNECT
|
||||||
|
|
||||||
|
|
||||||
async def test_ssdp_not_successful_2(hass: HomeAssistant, no_mac_address: Mock):
|
@pytest.mark.usefixtures("no_mac_address")
|
||||||
|
async def test_ssdp_not_successful_2(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from discovery but no device found."""
|
"""Test starting a flow from discovery but no device found."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -536,9 +544,10 @@ async def test_ssdp_not_successful_2(hass: HomeAssistant, no_mac_address: Mock):
|
||||||
assert result["reason"] == RESULT_CANNOT_CONNECT
|
assert result["reason"] == RESULT_CANNOT_CONNECT
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("remote")
|
||||||
async def test_ssdp_already_in_progress(
|
async def test_ssdp_already_in_progress(
|
||||||
hass: HomeAssistant, remote: Mock, no_mac_address: Mock
|
hass: HomeAssistant, no_mac_address: Mock
|
||||||
):
|
) -> None:
|
||||||
"""Test starting a flow from discovery twice."""
|
"""Test starting a flow from discovery twice."""
|
||||||
|
|
||||||
no_mac_address.return_value = "aa:bb:cc:dd:ee:ff"
|
no_mac_address.return_value = "aa:bb:cc:dd:ee:ff"
|
||||||
|
@ -562,9 +571,10 @@ async def test_ssdp_already_in_progress(
|
||||||
assert result["reason"] == RESULT_ALREADY_IN_PROGRESS
|
assert result["reason"] == RESULT_ALREADY_IN_PROGRESS
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("remote")
|
||||||
async def test_ssdp_already_configured(
|
async def test_ssdp_already_configured(
|
||||||
hass: HomeAssistant, remote: Mock, no_mac_address: Mock
|
hass: HomeAssistant, no_mac_address: Mock
|
||||||
):
|
) -> None:
|
||||||
"""Test starting a flow from discovery when already configured."""
|
"""Test starting a flow from discovery when already configured."""
|
||||||
|
|
||||||
no_mac_address.return_value = "aa:bb:cc:dd:ee:ff"
|
no_mac_address.return_value = "aa:bb:cc:dd:ee:ff"
|
||||||
|
@ -594,7 +604,8 @@ async def test_ssdp_already_configured(
|
||||||
assert entry.unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
assert entry.unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
||||||
|
|
||||||
|
|
||||||
async def test_import_legacy(hass: HomeAssistant, remote: Mock, no_mac_address: Mock):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_import_legacy(hass: HomeAssistant, no_mac_address: Mock) -> None:
|
||||||
"""Test importing from yaml with hostname."""
|
"""Test importing from yaml with hostname."""
|
||||||
|
|
||||||
no_mac_address.return_value = "aa:bb:cc:dd:ee:ff"
|
no_mac_address.return_value = "aa:bb:cc:dd:ee:ff"
|
||||||
|
@ -617,12 +628,8 @@ async def test_import_legacy(hass: HomeAssistant, remote: Mock, no_mac_address:
|
||||||
assert entries[0].data[CONF_PORT] == LEGACY_PORT
|
assert entries[0].data[CONF_PORT] == LEGACY_PORT
|
||||||
|
|
||||||
|
|
||||||
async def test_import_legacy_without_name(
|
@pytest.mark.usefixtures("remote", "remotews_no_device_info", "no_mac_address")
|
||||||
hass: HomeAssistant,
|
async def test_import_legacy_without_name(hass: HomeAssistant) -> None:
|
||||||
remote: Mock,
|
|
||||||
remotews_no_device_info: Mock,
|
|
||||||
no_mac_address: Mock,
|
|
||||||
):
|
|
||||||
"""Test importing from yaml without a name."""
|
"""Test importing from yaml without a name."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
@ -642,7 +649,8 @@ async def test_import_legacy_without_name(
|
||||||
assert entries[0].data[CONF_PORT] == LEGACY_PORT
|
assert entries[0].data[CONF_PORT] == LEGACY_PORT
|
||||||
|
|
||||||
|
|
||||||
async def test_import_websocket(hass: HomeAssistant, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_import_websocket(hass: HomeAssistant):
|
||||||
"""Test importing from yaml with hostname."""
|
"""Test importing from yaml with hostname."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
@ -660,7 +668,8 @@ async def test_import_websocket(hass: HomeAssistant, remotews: Mock):
|
||||||
assert result["result"].unique_id is None
|
assert result["result"].unique_id is None
|
||||||
|
|
||||||
|
|
||||||
async def test_import_websocket_without_port(hass: HomeAssistant, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_import_websocket_without_port(hass: HomeAssistant):
|
||||||
"""Test importing from yaml with hostname by no port."""
|
"""Test importing from yaml with hostname by no port."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
@ -681,7 +690,8 @@ async def test_import_websocket_without_port(hass: HomeAssistant, remotews: Mock
|
||||||
assert entries[0].data[CONF_PORT] == 8002
|
assert entries[0].data[CONF_PORT] == 8002
|
||||||
|
|
||||||
|
|
||||||
async def test_import_unknown_host(hass: HomeAssistant, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_import_unknown_host(hass: HomeAssistant):
|
||||||
"""Test importing from yaml with hostname that does not resolve."""
|
"""Test importing from yaml with hostname that does not resolve."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.config_flow.socket.gethostbyname",
|
"homeassistant.components.samsungtv.config_flow.socket.gethostbyname",
|
||||||
|
@ -697,7 +707,8 @@ async def test_import_unknown_host(hass: HomeAssistant, remotews: Mock):
|
||||||
assert result["reason"] == RESULT_UNKNOWN_HOST
|
assert result["reason"] == RESULT_UNKNOWN_HOST
|
||||||
|
|
||||||
|
|
||||||
async def test_dhcp(hass: HomeAssistant, remote: Mock, remotews: Mock):
|
@pytest.mark.usefixtures("remote", "remotews")
|
||||||
|
async def test_dhcp(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from dhcp."""
|
"""Test starting a flow from dhcp."""
|
||||||
# confirm to add the entry
|
# confirm to add the entry
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
|
@ -723,7 +734,8 @@ async def test_dhcp(hass: HomeAssistant, remote: Mock, remotews: Mock):
|
||||||
assert result["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
assert result["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
||||||
|
|
||||||
|
|
||||||
async def test_zeroconf(hass: HomeAssistant, remote: Mock, remotews: Mock):
|
@pytest.mark.usefixtures("remote", "remotews")
|
||||||
|
async def test_zeroconf(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from zeroconf."""
|
"""Test starting a flow from zeroconf."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
@ -748,7 +760,8 @@ async def test_zeroconf(hass: HomeAssistant, remote: Mock, remotews: Mock):
|
||||||
assert result["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
assert result["result"].unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
||||||
|
|
||||||
|
|
||||||
async def test_zeroconf_ignores_soundbar(hass: HomeAssistant, remotews_soundbar: Mock):
|
@pytest.mark.usefixtures("remotews_soundbar")
|
||||||
|
async def test_zeroconf_ignores_soundbar(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from zeroconf where the device is actually a soundbar."""
|
"""Test starting a flow from zeroconf where the device is actually a soundbar."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
@ -760,9 +773,8 @@ async def test_zeroconf_ignores_soundbar(hass: HomeAssistant, remotews_soundbar:
|
||||||
assert result["reason"] == "not_supported"
|
assert result["reason"] == "not_supported"
|
||||||
|
|
||||||
|
|
||||||
async def test_zeroconf_no_device_info(
|
@pytest.mark.usefixtures("remote", "remotews_no_device_info")
|
||||||
hass: HomeAssistant, remote: Mock, remotews_no_device_info: Mock
|
async def test_zeroconf_no_device_info(hass: HomeAssistant) -> None:
|
||||||
):
|
|
||||||
"""Test starting a flow from zeroconf where device_info returns None."""
|
"""Test starting a flow from zeroconf where device_info returns None."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
@ -774,7 +786,8 @@ async def test_zeroconf_no_device_info(
|
||||||
assert result["reason"] == "not_supported"
|
assert result["reason"] == "not_supported"
|
||||||
|
|
||||||
|
|
||||||
async def test_zeroconf_and_dhcp_same_time(hass: HomeAssistant, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_zeroconf_and_dhcp_same_time(hass: HomeAssistant) -> None:
|
||||||
"""Test starting a flow from zeroconf and dhcp."""
|
"""Test starting a flow from zeroconf and dhcp."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
@ -795,7 +808,7 @@ async def test_zeroconf_and_dhcp_same_time(hass: HomeAssistant, remotews: Mock):
|
||||||
assert result2["reason"] == "already_in_progress"
|
assert result2["reason"] == "already_in_progress"
|
||||||
|
|
||||||
|
|
||||||
async def test_autodetect_websocket(hass: HomeAssistant):
|
async def test_autodetect_websocket(hass: HomeAssistant) -> None:
|
||||||
"""Test for send key with autodetection of protocol."""
|
"""Test for send key with autodetection of protocol."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -837,7 +850,7 @@ async def test_autodetect_websocket(hass: HomeAssistant):
|
||||||
assert entries[0].data[CONF_MAC] == "aa:bb:cc:dd:ee:ff"
|
assert entries[0].data[CONF_MAC] == "aa:bb:cc:dd:ee:ff"
|
||||||
|
|
||||||
|
|
||||||
async def test_websocket_no_mac(hass: HomeAssistant):
|
async def test_websocket_no_mac(hass: HomeAssistant) -> None:
|
||||||
"""Test for send key with autodetection of protocol."""
|
"""Test for send key with autodetection of protocol."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -882,7 +895,7 @@ async def test_websocket_no_mac(hass: HomeAssistant):
|
||||||
assert entries[0].data[CONF_MAC] == "gg:hh:ii:ll:mm:nn"
|
assert entries[0].data[CONF_MAC] == "gg:hh:ii:ll:mm:nn"
|
||||||
|
|
||||||
|
|
||||||
async def test_autodetect_auth_missing(hass: HomeAssistant):
|
async def test_autodetect_auth_missing(hass: HomeAssistant) -> None:
|
||||||
"""Test for send key with autodetection of protocol."""
|
"""Test for send key with autodetection of protocol."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -897,7 +910,7 @@ async def test_autodetect_auth_missing(hass: HomeAssistant):
|
||||||
assert remote.call_args_list == [call(AUTODETECT_LEGACY)]
|
assert remote.call_args_list == [call(AUTODETECT_LEGACY)]
|
||||||
|
|
||||||
|
|
||||||
async def test_autodetect_not_supported(hass: HomeAssistant):
|
async def test_autodetect_not_supported(hass: HomeAssistant) -> None:
|
||||||
"""Test for send key with autodetection of protocol."""
|
"""Test for send key with autodetection of protocol."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -912,7 +925,8 @@ async def test_autodetect_not_supported(hass: HomeAssistant):
|
||||||
assert remote.call_args_list == [call(AUTODETECT_LEGACY)]
|
assert remote.call_args_list == [call(AUTODETECT_LEGACY)]
|
||||||
|
|
||||||
|
|
||||||
async def test_autodetect_legacy(hass: HomeAssistant, remote: Mock):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_autodetect_legacy(hass: HomeAssistant) -> None:
|
||||||
"""Test for send key with autodetection of protocol."""
|
"""Test for send key with autodetection of protocol."""
|
||||||
result = await hass.config_entries.flow.async_init(
|
result = await hass.config_entries.flow.async_init(
|
||||||
DOMAIN, context={"source": config_entries.SOURCE_USER}, data=MOCK_USER_DATA
|
DOMAIN, context={"source": config_entries.SOURCE_USER}, data=MOCK_USER_DATA
|
||||||
|
@ -924,7 +938,7 @@ async def test_autodetect_legacy(hass: HomeAssistant, remote: Mock):
|
||||||
assert result["data"][CONF_PORT] == LEGACY_PORT
|
assert result["data"][CONF_PORT] == LEGACY_PORT
|
||||||
|
|
||||||
|
|
||||||
async def test_autodetect_none(hass: HomeAssistant):
|
async def test_autodetect_none(hass: HomeAssistant) -> None:
|
||||||
"""Test for send key with autodetection of protocol."""
|
"""Test for send key with autodetection of protocol."""
|
||||||
mock_remotews = Mock()
|
mock_remotews = Mock()
|
||||||
mock_remotews.__enter__ = Mock(return_value=mock_remotews)
|
mock_remotews.__enter__ = Mock(return_value=mock_remotews)
|
||||||
|
@ -954,7 +968,8 @@ async def test_autodetect_none(hass: HomeAssistant):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
async def test_update_old_entry(hass: HomeAssistant, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_update_old_entry(hass: HomeAssistant) -> None:
|
||||||
"""Test update of old entry."""
|
"""Test update of old entry."""
|
||||||
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote:
|
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote:
|
||||||
remote().rest_device_info.return_value = {
|
remote().rest_device_info.return_value = {
|
||||||
|
@ -995,7 +1010,10 @@ async def test_update_old_entry(hass: HomeAssistant, remotews: Mock):
|
||||||
assert entry2.unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
assert entry2.unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
||||||
|
|
||||||
|
|
||||||
async def test_update_missing_mac_unique_id_added_from_dhcp(hass, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_update_missing_mac_unique_id_added_from_dhcp(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
) -> None:
|
||||||
"""Test missing mac and unique id added."""
|
"""Test missing mac and unique id added."""
|
||||||
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_OLD_ENTRY, unique_id=None)
|
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_OLD_ENTRY, unique_id=None)
|
||||||
entry.add_to_hass(hass)
|
entry.add_to_hass(hass)
|
||||||
|
@ -1021,7 +1039,10 @@ async def test_update_missing_mac_unique_id_added_from_dhcp(hass, remotews: Mock
|
||||||
assert entry.unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
assert entry.unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
||||||
|
|
||||||
|
|
||||||
async def test_update_missing_mac_unique_id_added_from_zeroconf(hass, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_update_missing_mac_unique_id_added_from_zeroconf(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
) -> None:
|
||||||
"""Test missing mac and unique id added."""
|
"""Test missing mac and unique id added."""
|
||||||
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_OLD_ENTRY, unique_id=None)
|
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_OLD_ENTRY, unique_id=None)
|
||||||
entry.add_to_hass(hass)
|
entry.add_to_hass(hass)
|
||||||
|
@ -1046,7 +1067,10 @@ async def test_update_missing_mac_unique_id_added_from_zeroconf(hass, remotews:
|
||||||
assert entry.unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
assert entry.unique_id == "be9554b9-c9fb-41f4-8920-22da015376a4"
|
||||||
|
|
||||||
|
|
||||||
async def test_update_missing_mac_unique_id_added_from_ssdp(hass, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_update_missing_mac_unique_id_added_from_ssdp(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
) -> None:
|
||||||
"""Test missing mac and unique id added via ssdp."""
|
"""Test missing mac and unique id added via ssdp."""
|
||||||
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_OLD_ENTRY, unique_id=None)
|
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_OLD_ENTRY, unique_id=None)
|
||||||
entry.add_to_hass(hass)
|
entry.add_to_hass(hass)
|
||||||
|
@ -1072,9 +1096,10 @@ async def test_update_missing_mac_unique_id_added_from_ssdp(hass, remotews: Mock
|
||||||
assert entry.unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
assert entry.unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.usefixtures("remotews")
|
||||||
async def test_update_missing_mac_added_unique_id_preserved_from_zeroconf(
|
async def test_update_missing_mac_added_unique_id_preserved_from_zeroconf(
|
||||||
hass, remotews: Mock
|
hass: HomeAssistant,
|
||||||
):
|
) -> None:
|
||||||
"""Test missing mac and unique id added."""
|
"""Test missing mac and unique id added."""
|
||||||
entry = MockConfigEntry(
|
entry = MockConfigEntry(
|
||||||
domain=DOMAIN,
|
domain=DOMAIN,
|
||||||
|
@ -1103,7 +1128,8 @@ async def test_update_missing_mac_added_unique_id_preserved_from_zeroconf(
|
||||||
assert entry.unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
assert entry.unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
||||||
|
|
||||||
|
|
||||||
async def test_update_legacy_missing_mac_from_dhcp(hass, remote: Mock):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_update_legacy_missing_mac_from_dhcp(hass: HomeAssistant) -> None:
|
||||||
"""Test missing mac added."""
|
"""Test missing mac added."""
|
||||||
entry = MockConfigEntry(
|
entry = MockConfigEntry(
|
||||||
domain=DOMAIN,
|
domain=DOMAIN,
|
||||||
|
@ -1134,7 +1160,10 @@ async def test_update_legacy_missing_mac_from_dhcp(hass, remote: Mock):
|
||||||
assert entry.unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
assert entry.unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
||||||
|
|
||||||
|
|
||||||
async def test_update_legacy_missing_mac_from_dhcp_no_unique_id(hass, remote: Mock):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_update_legacy_missing_mac_from_dhcp_no_unique_id(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
) -> None:
|
||||||
"""Test missing mac added when there is no unique id."""
|
"""Test missing mac added when there is no unique id."""
|
||||||
entry = MockConfigEntry(
|
entry = MockConfigEntry(
|
||||||
domain=DOMAIN,
|
domain=DOMAIN,
|
||||||
|
@ -1170,7 +1199,8 @@ async def test_update_legacy_missing_mac_from_dhcp_no_unique_id(hass, remote: Mo
|
||||||
assert entry.unique_id is None
|
assert entry.unique_id is None
|
||||||
|
|
||||||
|
|
||||||
async def test_form_reauth_legacy(hass, remote: Mock):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_form_reauth_legacy(hass: HomeAssistant) -> None:
|
||||||
"""Test reauthenticate legacy."""
|
"""Test reauthenticate legacy."""
|
||||||
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_OLD_ENTRY)
|
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_OLD_ENTRY)
|
||||||
entry.add_to_hass(hass)
|
entry.add_to_hass(hass)
|
||||||
|
@ -1191,7 +1221,8 @@ async def test_form_reauth_legacy(hass, remote: Mock):
|
||||||
assert result2["reason"] == "reauth_successful"
|
assert result2["reason"] == "reauth_successful"
|
||||||
|
|
||||||
|
|
||||||
async def test_form_reauth_websocket(hass, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_form_reauth_websocket(hass: HomeAssistant) -> None:
|
||||||
"""Test reauthenticate websocket."""
|
"""Test reauthenticate websocket."""
|
||||||
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_WS_ENTRY)
|
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_WS_ENTRY)
|
||||||
entry.add_to_hass(hass)
|
entry.add_to_hass(hass)
|
||||||
|
@ -1215,7 +1246,8 @@ async def test_form_reauth_websocket(hass, remotews: Mock):
|
||||||
assert entry.state == config_entries.ConfigEntryState.LOADED
|
assert entry.state == config_entries.ConfigEntryState.LOADED
|
||||||
|
|
||||||
|
|
||||||
async def test_form_reauth_websocket_cannot_connect(hass, remotews: Mock):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_form_reauth_websocket_cannot_connect(hass: HomeAssistant) -> None:
|
||||||
"""Test reauthenticate websocket when we cannot connect on the first attempt."""
|
"""Test reauthenticate websocket when we cannot connect on the first attempt."""
|
||||||
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_WS_ENTRY)
|
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_WS_ENTRY)
|
||||||
entry.add_to_hass(hass)
|
entry.add_to_hass(hass)
|
||||||
|
@ -1247,7 +1279,7 @@ async def test_form_reauth_websocket_cannot_connect(hass, remotews: Mock):
|
||||||
assert result3["reason"] == "reauth_successful"
|
assert result3["reason"] == "reauth_successful"
|
||||||
|
|
||||||
|
|
||||||
async def test_form_reauth_websocket_not_supported(hass):
|
async def test_form_reauth_websocket_not_supported(hass: HomeAssistant) -> None:
|
||||||
"""Test reauthenticate websocket when the device is not supported."""
|
"""Test reauthenticate websocket when the device is not supported."""
|
||||||
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_WS_ENTRY)
|
entry = MockConfigEntry(domain=DOMAIN, data=MOCK_WS_ENTRY)
|
||||||
entry.add_to_hass(hass)
|
entry.add_to_hass(hass)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
"""Tests for the Samsung TV Integration."""
|
"""Tests for the Samsung TV Integration."""
|
||||||
from unittest.mock import Mock, patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.media_player.const import DOMAIN, SUPPORT_TURN_ON
|
from homeassistant.components.media_player.const import DOMAIN, SUPPORT_TURN_ON
|
||||||
from homeassistant.components.samsungtv.const import (
|
from homeassistant.components.samsungtv.const import (
|
||||||
|
@ -53,7 +55,8 @@ REMOTE_CALL = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async def test_setup(hass: HomeAssistant, remotews: Mock, no_mac_address: Mock):
|
@pytest.mark.usefixtures("remotews", "no_mac_address")
|
||||||
|
async def test_setup(hass: HomeAssistant) -> None:
|
||||||
"""Test Samsung TV integration is setup."""
|
"""Test Samsung TV integration is setup."""
|
||||||
await async_setup_component(hass, SAMSUNGTV_DOMAIN, MOCK_CONFIG)
|
await async_setup_component(hass, SAMSUNGTV_DOMAIN, MOCK_CONFIG)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
@ -72,7 +75,7 @@ async def test_setup(hass: HomeAssistant, remotews: Mock, no_mac_address: Mock):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def test_setup_from_yaml_without_port_device_offline(hass: HomeAssistant):
|
async def test_setup_from_yaml_without_port_device_offline(hass: HomeAssistant) -> None:
|
||||||
"""Test import from yaml when the device is offline."""
|
"""Test import from yaml when the device is offline."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote", side_effect=OSError
|
"homeassistant.components.samsungtv.bridge.Remote", side_effect=OSError
|
||||||
|
@ -91,9 +94,8 @@ async def test_setup_from_yaml_without_port_device_offline(hass: HomeAssistant):
|
||||||
assert config_entries_domain[0].state == ConfigEntryState.SETUP_RETRY
|
assert config_entries_domain[0].state == ConfigEntryState.SETUP_RETRY
|
||||||
|
|
||||||
|
|
||||||
async def test_setup_from_yaml_without_port_device_online(
|
@pytest.mark.usefixtures("remotews")
|
||||||
hass: HomeAssistant, remotews: Mock
|
async def test_setup_from_yaml_without_port_device_online(hass: HomeAssistant) -> None:
|
||||||
):
|
|
||||||
"""Test import from yaml when the device is online."""
|
"""Test import from yaml when the device is online."""
|
||||||
await async_setup_component(hass, SAMSUNGTV_DOMAIN, MOCK_CONFIG)
|
await async_setup_component(hass, SAMSUNGTV_DOMAIN, MOCK_CONFIG)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
@ -103,7 +105,10 @@ async def test_setup_from_yaml_without_port_device_online(
|
||||||
assert config_entries_domain[0].data[CONF_MAC] == "aa:bb:cc:dd:ee:ff"
|
assert config_entries_domain[0].data[CONF_MAC] == "aa:bb:cc:dd:ee:ff"
|
||||||
|
|
||||||
|
|
||||||
async def test_setup_duplicate_config(hass: HomeAssistant, remote: Mock, caplog):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_setup_duplicate_config(
|
||||||
|
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
|
||||||
|
) -> None:
|
||||||
"""Test duplicate setup of platform."""
|
"""Test duplicate setup of platform."""
|
||||||
duplicate = {
|
duplicate = {
|
||||||
SAMSUNGTV_DOMAIN: [
|
SAMSUNGTV_DOMAIN: [
|
||||||
|
@ -118,9 +123,8 @@ async def test_setup_duplicate_config(hass: HomeAssistant, remote: Mock, caplog)
|
||||||
assert "duplicate host entries found" in caplog.text
|
assert "duplicate host entries found" in caplog.text
|
||||||
|
|
||||||
|
|
||||||
async def test_setup_duplicate_entries(
|
@pytest.mark.usefixtures("remote", "remotews", "no_mac_address")
|
||||||
hass: HomeAssistant, remote: Mock, remotews: Mock, no_mac_address: Mock
|
async def test_setup_duplicate_entries(hass: HomeAssistant) -> None:
|
||||||
):
|
|
||||||
"""Test duplicate setup of platform."""
|
"""Test duplicate setup of platform."""
|
||||||
await async_setup_component(hass, SAMSUNGTV_DOMAIN, MOCK_CONFIG)
|
await async_setup_component(hass, SAMSUNGTV_DOMAIN, MOCK_CONFIG)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"""Tests for samsungtv component."""
|
"""Tests for samsungtv component."""
|
||||||
import asyncio
|
import asyncio
|
||||||
from datetime import timedelta
|
from datetime import datetime, timedelta
|
||||||
import logging
|
import logging
|
||||||
from unittest.mock import DEFAULT as DEFAULT_MOCK, Mock, call, patch
|
from unittest.mock import DEFAULT as DEFAULT_MOCK, Mock, call, patch
|
||||||
|
|
||||||
|
@ -56,6 +56,8 @@ from homeassistant.const import (
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
)
|
)
|
||||||
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.helpers.typing import ConfigType
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
|
|
||||||
|
@ -131,25 +133,28 @@ def delay_fixture():
|
||||||
yield delay
|
yield delay
|
||||||
|
|
||||||
|
|
||||||
async def setup_samsungtv(hass, config):
|
async def setup_samsungtv(hass: HomeAssistant, config: ConfigType) -> None:
|
||||||
"""Set up mock Samsung TV."""
|
"""Set up mock Samsung TV."""
|
||||||
await async_setup_component(hass, SAMSUNGTV_DOMAIN, config)
|
await async_setup_component(hass, SAMSUNGTV_DOMAIN, config)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
|
||||||
async def test_setup_with_turnon(hass, remote):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_setup_with_turnon(hass: HomeAssistant) -> None:
|
||||||
"""Test setup of platform."""
|
"""Test setup of platform."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert hass.states.get(ENTITY_ID)
|
assert hass.states.get(ENTITY_ID)
|
||||||
|
|
||||||
|
|
||||||
async def test_setup_without_turnon(hass, remote):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_setup_without_turnon(hass: HomeAssistant) -> None:
|
||||||
"""Test setup of platform."""
|
"""Test setup of platform."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG_NOTURNON)
|
await setup_samsungtv(hass, MOCK_CONFIG_NOTURNON)
|
||||||
assert hass.states.get(ENTITY_ID_NOTURNON)
|
assert hass.states.get(ENTITY_ID_NOTURNON)
|
||||||
|
|
||||||
|
|
||||||
async def test_setup_websocket(hass, remotews):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_setup_websocket(hass: HomeAssistant) -> None:
|
||||||
"""Test setup of platform."""
|
"""Test setup of platform."""
|
||||||
with patch("homeassistant.components.samsungtv.bridge.SamsungTVWS") as remote_class:
|
with patch("homeassistant.components.samsungtv.bridge.SamsungTVWS") as remote_class:
|
||||||
remote = Mock(SamsungTVWS)
|
remote = Mock(SamsungTVWS)
|
||||||
|
@ -184,7 +189,7 @@ async def test_setup_websocket(hass, remotews):
|
||||||
assert config_entries[0].data[CONF_MAC] == "aa:bb:cc:dd:ee:ff"
|
assert config_entries[0].data[CONF_MAC] == "aa:bb:cc:dd:ee:ff"
|
||||||
|
|
||||||
|
|
||||||
async def test_setup_websocket_2(hass, mock_now):
|
async def test_setup_websocket_2(hass: HomeAssistant, mock_now: datetime) -> None:
|
||||||
"""Test setup of platform from config entry."""
|
"""Test setup of platform from config entry."""
|
||||||
entity_id = f"{DOMAIN}.fake"
|
entity_id = f"{DOMAIN}.fake"
|
||||||
|
|
||||||
|
@ -231,7 +236,8 @@ async def test_setup_websocket_2(hass, mock_now):
|
||||||
assert remote_class.call_args_list[0] == call(**MOCK_CALLS_WS)
|
assert remote_class.call_args_list[0] == call(**MOCK_CALLS_WS)
|
||||||
|
|
||||||
|
|
||||||
async def test_update_on(hass, remote, mock_now):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_update_on(hass: HomeAssistant, mock_now: datetime) -> None:
|
||||||
"""Testing update tv on."""
|
"""Testing update tv on."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
|
|
||||||
|
@ -244,7 +250,8 @@ async def test_update_on(hass, remote, mock_now):
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
|
|
||||||
async def test_update_off(hass, remote, mock_now):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_update_off(hass: HomeAssistant, mock_now: datetime) -> None:
|
||||||
"""Testing update tv off."""
|
"""Testing update tv off."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
|
|
||||||
|
@ -262,7 +269,8 @@ async def test_update_off(hass, remote, mock_now):
|
||||||
assert state.state == STATE_OFF
|
assert state.state == STATE_OFF
|
||||||
|
|
||||||
|
|
||||||
async def test_update_access_denied(hass, remote, mock_now):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_update_access_denied(hass: HomeAssistant, mock_now: datetime) -> None:
|
||||||
"""Testing update tv access denied exception."""
|
"""Testing update tv access denied exception."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
|
|
||||||
|
@ -288,7 +296,10 @@ async def test_update_access_denied(hass, remote, mock_now):
|
||||||
assert state.state == STATE_UNAVAILABLE
|
assert state.state == STATE_UNAVAILABLE
|
||||||
|
|
||||||
|
|
||||||
async def test_update_connection_failure(hass, remotews, mock_now):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_update_connection_failure(
|
||||||
|
hass: HomeAssistant, mock_now: datetime
|
||||||
|
) -> None:
|
||||||
"""Testing update tv connection failure exception."""
|
"""Testing update tv connection failure exception."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -315,7 +326,10 @@ async def test_update_connection_failure(hass, remotews, mock_now):
|
||||||
assert state.state == STATE_UNAVAILABLE
|
assert state.state == STATE_UNAVAILABLE
|
||||||
|
|
||||||
|
|
||||||
async def test_update_unhandled_response(hass, remote, mock_now):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_update_unhandled_response(
|
||||||
|
hass: HomeAssistant, mock_now: datetime
|
||||||
|
) -> None:
|
||||||
"""Testing update tv unhandled response exception."""
|
"""Testing update tv unhandled response exception."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
|
|
||||||
|
@ -333,7 +347,10 @@ async def test_update_unhandled_response(hass, remote, mock_now):
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
|
|
||||||
async def test_connection_closed_during_update_can_recover(hass, remote, mock_now):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_connection_closed_during_update_can_recover(
|
||||||
|
hass: HomeAssistant, mock_now: datetime
|
||||||
|
) -> None:
|
||||||
"""Testing update tv connection closed exception can recover."""
|
"""Testing update tv connection closed exception can recover."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
|
|
||||||
|
@ -359,7 +376,7 @@ async def test_connection_closed_during_update_can_recover(hass, remote, mock_no
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
|
|
||||||
async def test_send_key(hass, remote):
|
async def test_send_key(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for send key."""
|
"""Test for send key."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -374,7 +391,7 @@ async def test_send_key(hass, remote):
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
|
|
||||||
async def test_send_key_broken_pipe(hass, remote):
|
async def test_send_key_broken_pipe(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Testing broken pipe Exception."""
|
"""Testing broken pipe Exception."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
remote.control = Mock(side_effect=BrokenPipeError("Boom"))
|
remote.control = Mock(side_effect=BrokenPipeError("Boom"))
|
||||||
|
@ -385,7 +402,9 @@ async def test_send_key_broken_pipe(hass, remote):
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
|
|
||||||
async def test_send_key_connection_closed_retry_succeed(hass, remote):
|
async def test_send_key_connection_closed_retry_succeed(
|
||||||
|
hass: HomeAssistant, remote: Mock
|
||||||
|
) -> None:
|
||||||
"""Test retry on connection closed."""
|
"""Test retry on connection closed."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
remote.control = Mock(
|
remote.control = Mock(
|
||||||
|
@ -406,7 +425,7 @@ async def test_send_key_connection_closed_retry_succeed(hass, remote):
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
|
|
||||||
async def test_send_key_unhandled_response(hass, remote):
|
async def test_send_key_unhandled_response(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Testing unhandled response exception."""
|
"""Testing unhandled response exception."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
remote.control = Mock(side_effect=exceptions.UnhandledResponse("Boom"))
|
remote.control = Mock(side_effect=exceptions.UnhandledResponse("Boom"))
|
||||||
|
@ -417,7 +436,7 @@ async def test_send_key_unhandled_response(hass, remote):
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
|
|
||||||
async def test_send_key_websocketexception(hass, remote):
|
async def test_send_key_websocketexception(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Testing unhandled response exception."""
|
"""Testing unhandled response exception."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
remote.control = Mock(side_effect=WebSocketException("Boom"))
|
remote.control = Mock(side_effect=WebSocketException("Boom"))
|
||||||
|
@ -428,7 +447,7 @@ async def test_send_key_websocketexception(hass, remote):
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
|
|
||||||
async def test_send_key_os_error(hass, remote):
|
async def test_send_key_os_error(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Testing broken pipe Exception."""
|
"""Testing broken pipe Exception."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
remote.control = Mock(side_effect=OSError("Boom"))
|
remote.control = Mock(side_effect=OSError("Boom"))
|
||||||
|
@ -439,14 +458,16 @@ async def test_send_key_os_error(hass, remote):
|
||||||
assert state.state == STATE_ON
|
assert state.state == STATE_ON
|
||||||
|
|
||||||
|
|
||||||
async def test_name(hass, remote):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_name(hass: HomeAssistant) -> None:
|
||||||
"""Test for name property."""
|
"""Test for name property."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
state = hass.states.get(ENTITY_ID)
|
state = hass.states.get(ENTITY_ID)
|
||||||
assert state.attributes[ATTR_FRIENDLY_NAME] == "fake"
|
assert state.attributes[ATTR_FRIENDLY_NAME] == "fake"
|
||||||
|
|
||||||
|
|
||||||
async def test_state_with_turnon(hass, remote, delay):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_state_with_turnon(hass: HomeAssistant, delay: Mock) -> None:
|
||||||
"""Test for state property."""
|
"""Test for state property."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -463,7 +484,8 @@ async def test_state_with_turnon(hass, remote, delay):
|
||||||
assert state.state == STATE_OFF
|
assert state.state == STATE_OFF
|
||||||
|
|
||||||
|
|
||||||
async def test_state_without_turnon(hass, remote):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_state_without_turnon(hass: HomeAssistant) -> None:
|
||||||
"""Test for state property."""
|
"""Test for state property."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG_NOTURNON)
|
await setup_samsungtv(hass, MOCK_CONFIG_NOTURNON)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -491,7 +513,8 @@ async def test_state_without_turnon(hass, remote):
|
||||||
assert state.state == STATE_UNAVAILABLE
|
assert state.state == STATE_UNAVAILABLE
|
||||||
|
|
||||||
|
|
||||||
async def test_supported_features_with_turnon(hass, remote):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_supported_features_with_turnon(hass: HomeAssistant) -> None:
|
||||||
"""Test for supported_features property."""
|
"""Test for supported_features property."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
state = hass.states.get(ENTITY_ID)
|
state = hass.states.get(ENTITY_ID)
|
||||||
|
@ -500,21 +523,23 @@ async def test_supported_features_with_turnon(hass, remote):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def test_supported_features_without_turnon(hass, remote):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_supported_features_without_turnon(hass: HomeAssistant) -> None:
|
||||||
"""Test for supported_features property."""
|
"""Test for supported_features property."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG_NOTURNON)
|
await setup_samsungtv(hass, MOCK_CONFIG_NOTURNON)
|
||||||
state = hass.states.get(ENTITY_ID_NOTURNON)
|
state = hass.states.get(ENTITY_ID_NOTURNON)
|
||||||
assert state.attributes[ATTR_SUPPORTED_FEATURES] == SUPPORT_SAMSUNGTV
|
assert state.attributes[ATTR_SUPPORTED_FEATURES] == SUPPORT_SAMSUNGTV
|
||||||
|
|
||||||
|
|
||||||
async def test_device_class(hass, remote):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_device_class(hass: HomeAssistant) -> None:
|
||||||
"""Test for device_class property."""
|
"""Test for device_class property."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
state = hass.states.get(ENTITY_ID)
|
state = hass.states.get(ENTITY_ID)
|
||||||
assert state.attributes[ATTR_DEVICE_CLASS] is MediaPlayerDeviceClass.TV.value
|
assert state.attributes[ATTR_DEVICE_CLASS] is MediaPlayerDeviceClass.TV.value
|
||||||
|
|
||||||
|
|
||||||
async def test_turn_off_websocket(hass, remotews):
|
async def test_turn_off_websocket(hass: HomeAssistant, remotews: Mock) -> None:
|
||||||
"""Test for turn_off."""
|
"""Test for turn_off."""
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.samsungtv.bridge.Remote",
|
"homeassistant.components.samsungtv.bridge.Remote",
|
||||||
|
@ -529,7 +554,7 @@ async def test_turn_off_websocket(hass, remotews):
|
||||||
assert remotews.send_key.call_args_list == [call("KEY_POWER")]
|
assert remotews.send_key.call_args_list == [call("KEY_POWER")]
|
||||||
|
|
||||||
|
|
||||||
async def test_turn_off_legacy(hass, remote):
|
async def test_turn_off_legacy(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for turn_off."""
|
"""Test for turn_off."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG_NOTURNON)
|
await setup_samsungtv(hass, MOCK_CONFIG_NOTURNON)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -540,7 +565,9 @@ async def test_turn_off_legacy(hass, remote):
|
||||||
assert remote.control.call_args_list == [call("KEY_POWEROFF")]
|
assert remote.control.call_args_list == [call("KEY_POWEROFF")]
|
||||||
|
|
||||||
|
|
||||||
async def test_turn_off_os_error(hass, remote, caplog):
|
async def test_turn_off_os_error(
|
||||||
|
hass: HomeAssistant, remote: Mock, caplog: pytest.LogCaptureFixture
|
||||||
|
) -> None:
|
||||||
"""Test for turn_off with OSError."""
|
"""Test for turn_off with OSError."""
|
||||||
caplog.set_level(logging.DEBUG)
|
caplog.set_level(logging.DEBUG)
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
|
@ -551,7 +578,7 @@ async def test_turn_off_os_error(hass, remote, caplog):
|
||||||
assert "Could not establish connection" in caplog.text
|
assert "Could not establish connection" in caplog.text
|
||||||
|
|
||||||
|
|
||||||
async def test_volume_up(hass, remote):
|
async def test_volume_up(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for volume_up."""
|
"""Test for volume_up."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -564,7 +591,7 @@ async def test_volume_up(hass, remote):
|
||||||
assert remote.close.call_args_list == [call()]
|
assert remote.close.call_args_list == [call()]
|
||||||
|
|
||||||
|
|
||||||
async def test_volume_down(hass, remote):
|
async def test_volume_down(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for volume_down."""
|
"""Test for volume_down."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -577,7 +604,7 @@ async def test_volume_down(hass, remote):
|
||||||
assert remote.close.call_args_list == [call()]
|
assert remote.close.call_args_list == [call()]
|
||||||
|
|
||||||
|
|
||||||
async def test_mute_volume(hass, remote):
|
async def test_mute_volume(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for mute_volume."""
|
"""Test for mute_volume."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -593,7 +620,7 @@ async def test_mute_volume(hass, remote):
|
||||||
assert remote.close.call_args_list == [call()]
|
assert remote.close.call_args_list == [call()]
|
||||||
|
|
||||||
|
|
||||||
async def test_media_play(hass, remote):
|
async def test_media_play(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for media_play."""
|
"""Test for media_play."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -615,7 +642,7 @@ async def test_media_play(hass, remote):
|
||||||
assert remote.close.call_args_list == [call(), call()]
|
assert remote.close.call_args_list == [call(), call()]
|
||||||
|
|
||||||
|
|
||||||
async def test_media_pause(hass, remote):
|
async def test_media_pause(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for media_pause."""
|
"""Test for media_pause."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -637,7 +664,7 @@ async def test_media_pause(hass, remote):
|
||||||
assert remote.close.call_args_list == [call(), call()]
|
assert remote.close.call_args_list == [call(), call()]
|
||||||
|
|
||||||
|
|
||||||
async def test_media_next_track(hass, remote):
|
async def test_media_next_track(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for media_next_track."""
|
"""Test for media_next_track."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -650,7 +677,7 @@ async def test_media_next_track(hass, remote):
|
||||||
assert remote.close.call_args_list == [call()]
|
assert remote.close.call_args_list == [call()]
|
||||||
|
|
||||||
|
|
||||||
async def test_media_previous_track(hass, remote):
|
async def test_media_previous_track(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for media_previous_track."""
|
"""Test for media_previous_track."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -663,7 +690,8 @@ async def test_media_previous_track(hass, remote):
|
||||||
assert remote.close.call_args_list == [call()]
|
assert remote.close.call_args_list == [call()]
|
||||||
|
|
||||||
|
|
||||||
async def test_turn_on_with_turnon(hass, remote, delay):
|
@pytest.mark.usefixtures("remote")
|
||||||
|
async def test_turn_on_with_turnon(hass: HomeAssistant, delay: Mock) -> None:
|
||||||
"""Test turn on."""
|
"""Test turn on."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -672,7 +700,8 @@ async def test_turn_on_with_turnon(hass, remote, delay):
|
||||||
assert delay.call_count == 1
|
assert delay.call_count == 1
|
||||||
|
|
||||||
|
|
||||||
async def test_turn_on_wol(hass, remotews):
|
@pytest.mark.usefixtures("remotews")
|
||||||
|
async def test_turn_on_wol(hass: HomeAssistant) -> None:
|
||||||
"""Test turn on."""
|
"""Test turn on."""
|
||||||
entry = MockConfigEntry(
|
entry = MockConfigEntry(
|
||||||
domain=SAMSUNGTV_DOMAIN,
|
domain=SAMSUNGTV_DOMAIN,
|
||||||
|
@ -692,7 +721,7 @@ async def test_turn_on_wol(hass, remotews):
|
||||||
assert mock_send_magic_packet.called
|
assert mock_send_magic_packet.called
|
||||||
|
|
||||||
|
|
||||||
async def test_turn_on_without_turnon(hass, remote):
|
async def test_turn_on_without_turnon(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test turn on."""
|
"""Test turn on."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG_NOTURNON)
|
await setup_samsungtv(hass, MOCK_CONFIG_NOTURNON)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -702,7 +731,7 @@ async def test_turn_on_without_turnon(hass, remote):
|
||||||
assert remote.control.call_count == 0
|
assert remote.control.call_count == 0
|
||||||
|
|
||||||
|
|
||||||
async def test_play_media(hass, remote):
|
async def test_play_media(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for play_media."""
|
"""Test for play_media."""
|
||||||
asyncio_sleep = asyncio.sleep
|
asyncio_sleep = asyncio.sleep
|
||||||
sleeps = []
|
sleeps = []
|
||||||
|
@ -736,7 +765,7 @@ async def test_play_media(hass, remote):
|
||||||
assert len(sleeps) == 3
|
assert len(sleeps) == 3
|
||||||
|
|
||||||
|
|
||||||
async def test_play_media_invalid_type(hass):
|
async def test_play_media_invalid_type(hass: HomeAssistant) -> None:
|
||||||
"""Test for play_media with invalid media type."""
|
"""Test for play_media with invalid media type."""
|
||||||
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote:
|
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote:
|
||||||
url = "https://example.com"
|
url = "https://example.com"
|
||||||
|
@ -758,7 +787,7 @@ async def test_play_media_invalid_type(hass):
|
||||||
assert remote.call_count == 1
|
assert remote.call_count == 1
|
||||||
|
|
||||||
|
|
||||||
async def test_play_media_channel_as_string(hass):
|
async def test_play_media_channel_as_string(hass: HomeAssistant) -> None:
|
||||||
"""Test for play_media with invalid channel as string."""
|
"""Test for play_media with invalid channel as string."""
|
||||||
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote:
|
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote:
|
||||||
url = "https://example.com"
|
url = "https://example.com"
|
||||||
|
@ -780,7 +809,7 @@ async def test_play_media_channel_as_string(hass):
|
||||||
assert remote.call_count == 1
|
assert remote.call_count == 1
|
||||||
|
|
||||||
|
|
||||||
async def test_play_media_channel_as_non_positive(hass):
|
async def test_play_media_channel_as_non_positive(hass: HomeAssistant) -> None:
|
||||||
"""Test for play_media with invalid channel as non positive integer."""
|
"""Test for play_media with invalid channel as non positive integer."""
|
||||||
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote:
|
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote:
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
|
@ -801,7 +830,7 @@ async def test_play_media_channel_as_non_positive(hass):
|
||||||
assert remote.call_count == 1
|
assert remote.call_count == 1
|
||||||
|
|
||||||
|
|
||||||
async def test_select_source(hass, remote):
|
async def test_select_source(hass: HomeAssistant, remote: Mock) -> None:
|
||||||
"""Test for select_source."""
|
"""Test for select_source."""
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
assert await hass.services.async_call(
|
assert await hass.services.async_call(
|
||||||
|
@ -817,7 +846,7 @@ async def test_select_source(hass, remote):
|
||||||
assert remote.close.call_args_list == [call()]
|
assert remote.close.call_args_list == [call()]
|
||||||
|
|
||||||
|
|
||||||
async def test_select_source_invalid_source(hass):
|
async def test_select_source_invalid_source(hass: HomeAssistant) -> None:
|
||||||
"""Test for select_source with invalid source."""
|
"""Test for select_source with invalid source."""
|
||||||
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote:
|
with patch("homeassistant.components.samsungtv.bridge.Remote") as remote:
|
||||||
await setup_samsungtv(hass, MOCK_CONFIG)
|
await setup_samsungtv(hass, MOCK_CONFIG)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue