mirror of
https://github.com/home-assistant/core.git
synced 2025-07-14 16:57:10 +00:00
Add binary sensor tests to Minecraft Server (#102457)
This commit is contained in:
parent
9f3a733f73
commit
faa149b71a
@ -745,7 +745,6 @@ omit =
|
|||||||
homeassistant/components/mikrotik/hub.py
|
homeassistant/components/mikrotik/hub.py
|
||||||
homeassistant/components/mill/climate.py
|
homeassistant/components/mill/climate.py
|
||||||
homeassistant/components/mill/sensor.py
|
homeassistant/components/mill/sensor.py
|
||||||
homeassistant/components/minecraft_server/binary_sensor.py
|
|
||||||
homeassistant/components/minio/minio_helper.py
|
homeassistant/components/minio/minio_helper.py
|
||||||
homeassistant/components/mjpeg/camera.py
|
homeassistant/components/mjpeg/camera.py
|
||||||
homeassistant/components/mjpeg/util.py
|
homeassistant/components/mjpeg/util.py
|
||||||
|
@ -0,0 +1,57 @@
|
|||||||
|
# serializer version: 1
|
||||||
|
# name: test_binary_sensor[bedrock_mock_config_entry-BedrockServer-status_response1]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'connectivity',
|
||||||
|
'friendly_name': 'Minecraft Server Status',
|
||||||
|
'icon': 'mdi:lan',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'binary_sensor.minecraft_server_status',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'on',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_binary_sensor[java_mock_config_entry-JavaServer-status_response0]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'connectivity',
|
||||||
|
'friendly_name': 'Minecraft Server Status',
|
||||||
|
'icon': 'mdi:lan',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'binary_sensor.minecraft_server_status',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'on',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_binary_sensor_update[bedrock_mock_config_entry-BedrockServer-status_response1]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'connectivity',
|
||||||
|
'friendly_name': 'Minecraft Server Status',
|
||||||
|
'icon': 'mdi:lan',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'binary_sensor.minecraft_server_status',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'on',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_binary_sensor_update[java_mock_config_entry-JavaServer-status_response0]
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'connectivity',
|
||||||
|
'friendly_name': 'Minecraft Server Status',
|
||||||
|
'icon': 'mdi:lan',
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'binary_sensor.minecraft_server_status',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'on',
|
||||||
|
})
|
||||||
|
# ---
|
128
tests/components/minecraft_server/test_binary_sensor.py
Normal file
128
tests/components/minecraft_server/test_binary_sensor.py
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
"""Tests for Minecraft Server binary sensor."""
|
||||||
|
from datetime import timedelta
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
|
from mcstatus import BedrockServer, JavaServer
|
||||||
|
from mcstatus.status_response import BedrockStatusResponse, JavaStatusResponse
|
||||||
|
import pytest
|
||||||
|
from syrupy import SnapshotAssertion
|
||||||
|
|
||||||
|
from homeassistant.const import STATE_OFF
|
||||||
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
|
from .const import (
|
||||||
|
TEST_BEDROCK_STATUS_RESPONSE,
|
||||||
|
TEST_HOST,
|
||||||
|
TEST_JAVA_STATUS_RESPONSE,
|
||||||
|
TEST_PORT,
|
||||||
|
)
|
||||||
|
|
||||||
|
from tests.common import async_fire_time_changed
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
("mock_config_entry", "server", "status_response"),
|
||||||
|
[
|
||||||
|
("java_mock_config_entry", JavaServer, TEST_JAVA_STATUS_RESPONSE),
|
||||||
|
("bedrock_mock_config_entry", BedrockServer, TEST_BEDROCK_STATUS_RESPONSE),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
async def test_binary_sensor(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_config_entry: str,
|
||||||
|
server: JavaServer | BedrockServer,
|
||||||
|
status_response: JavaStatusResponse | BedrockStatusResponse,
|
||||||
|
request: pytest.FixtureRequest,
|
||||||
|
snapshot: SnapshotAssertion,
|
||||||
|
) -> None:
|
||||||
|
"""Test binary sensor."""
|
||||||
|
mock_config_entry = request.getfixturevalue(mock_config_entry)
|
||||||
|
mock_config_entry.add_to_hass(hass)
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
f"homeassistant.components.minecraft_server.api.{server.__name__}.lookup",
|
||||||
|
return_value=server(host=TEST_HOST, port=TEST_PORT),
|
||||||
|
), patch(
|
||||||
|
f"homeassistant.components.minecraft_server.api.{server.__name__}.async_status",
|
||||||
|
return_value=status_response,
|
||||||
|
):
|
||||||
|
assert await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert hass.states.get("binary_sensor.minecraft_server_status") == snapshot
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
("mock_config_entry", "server", "status_response"),
|
||||||
|
[
|
||||||
|
("java_mock_config_entry", JavaServer, TEST_JAVA_STATUS_RESPONSE),
|
||||||
|
("bedrock_mock_config_entry", BedrockServer, TEST_BEDROCK_STATUS_RESPONSE),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
async def test_binary_sensor_update(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_config_entry: str,
|
||||||
|
server: JavaServer | BedrockServer,
|
||||||
|
status_response: JavaStatusResponse | BedrockStatusResponse,
|
||||||
|
request: pytest.FixtureRequest,
|
||||||
|
snapshot: SnapshotAssertion,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
|
) -> None:
|
||||||
|
"""Test binary sensor update."""
|
||||||
|
mock_config_entry = request.getfixturevalue(mock_config_entry)
|
||||||
|
mock_config_entry.add_to_hass(hass)
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
f"homeassistant.components.minecraft_server.api.{server.__name__}.lookup",
|
||||||
|
return_value=server(host=TEST_HOST, port=TEST_PORT),
|
||||||
|
), patch(
|
||||||
|
f"homeassistant.components.minecraft_server.api.{server.__name__}.async_status",
|
||||||
|
return_value=status_response,
|
||||||
|
):
|
||||||
|
assert await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
freezer.tick(timedelta(minutes=1))
|
||||||
|
async_fire_time_changed(hass)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert hass.states.get("binary_sensor.minecraft_server_status") == snapshot
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
("mock_config_entry", "server", "status_response"),
|
||||||
|
[
|
||||||
|
("java_mock_config_entry", JavaServer, TEST_JAVA_STATUS_RESPONSE),
|
||||||
|
("bedrock_mock_config_entry", BedrockServer, TEST_BEDROCK_STATUS_RESPONSE),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
async def test_binary_sensor_update_failure(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_config_entry: str,
|
||||||
|
server: JavaServer | BedrockServer,
|
||||||
|
status_response: JavaStatusResponse | BedrockStatusResponse,
|
||||||
|
request: pytest.FixtureRequest,
|
||||||
|
freezer: FrozenDateTimeFactory,
|
||||||
|
) -> None:
|
||||||
|
"""Test failed binary sensor update."""
|
||||||
|
mock_config_entry = request.getfixturevalue(mock_config_entry)
|
||||||
|
mock_config_entry.add_to_hass(hass)
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
f"homeassistant.components.minecraft_server.api.{server.__name__}.lookup",
|
||||||
|
return_value=server(host=TEST_HOST, port=TEST_PORT),
|
||||||
|
), patch(
|
||||||
|
f"homeassistant.components.minecraft_server.api.{server.__name__}.async_status",
|
||||||
|
return_value=status_response,
|
||||||
|
):
|
||||||
|
assert await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
f"homeassistant.components.minecraft_server.api.{server.__name__}.async_status",
|
||||||
|
side_effect=OSError,
|
||||||
|
):
|
||||||
|
freezer.tick(timedelta(minutes=1))
|
||||||
|
async_fire_time_changed(hass)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert (
|
||||||
|
hass.states.get("binary_sensor.minecraft_server_status").state == STATE_OFF
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user