mirror of
https://github.com/home-assistant/core.git
synced 2026-08-07 22:05:35 +01:00
124 lines
3.8 KiB
Python
124 lines
3.8 KiB
Python
"""Test the NZBGet sensors."""
|
|
|
|
from datetime import timedelta
|
|
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
from homeassistant.components.nzbget.const import DOMAIN
|
|
from homeassistant.components.sensor import SensorDeviceClass
|
|
from homeassistant.const import (
|
|
ATTR_UNIT_OF_MEASUREMENT,
|
|
CONF_HOST,
|
|
CONF_PASSWORD,
|
|
CONF_PORT,
|
|
CONF_SSL,
|
|
CONF_USERNAME,
|
|
CONF_VERIFY_SSL,
|
|
UnitOfDataRate,
|
|
UnitOfInformation,
|
|
)
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers import entity_registry as er
|
|
from homeassistant.util import dt as dt_util
|
|
|
|
from . import ENTRY_OPTIONS, init_integration
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
|
|
@pytest.mark.usefixtures("nzbget_api")
|
|
async def test_sensors(hass: HomeAssistant, entity_registry: er.EntityRegistry) -> None:
|
|
"""Test the creation and values of the sensors."""
|
|
now = dt_util.utcnow().replace(microsecond=0)
|
|
with patch("homeassistant.components.nzbget.sensor.utcnow", return_value=now):
|
|
entry = await init_integration(hass)
|
|
|
|
uptime = now - timedelta(seconds=600)
|
|
|
|
sensors = {
|
|
"article_cache": (
|
|
"ArticleCacheMB",
|
|
"64",
|
|
UnitOfInformation.MEGABYTES,
|
|
SensorDeviceClass.DATA_SIZE,
|
|
),
|
|
"average_speed": (
|
|
"AverageDownloadRate",
|
|
"1.25",
|
|
UnitOfDataRate.MEGABYTES_PER_SECOND,
|
|
SensorDeviceClass.DATA_RATE,
|
|
),
|
|
"download_paused": ("DownloadPaused", "False", None, None),
|
|
"speed": (
|
|
"DownloadRate",
|
|
"2.5",
|
|
UnitOfDataRate.MEGABYTES_PER_SECOND,
|
|
SensorDeviceClass.DATA_RATE,
|
|
),
|
|
"size": (
|
|
"DownloadedSizeMB",
|
|
"256",
|
|
UnitOfInformation.MEGABYTES,
|
|
SensorDeviceClass.DATA_SIZE,
|
|
),
|
|
"disk_free": (
|
|
"FreeDiskSpaceMB",
|
|
"1024",
|
|
UnitOfInformation.MEGABYTES,
|
|
SensorDeviceClass.DATA_SIZE,
|
|
),
|
|
"post_processing_jobs": ("PostJobCount", "2", "Jobs", None),
|
|
"post_processing_paused": ("PostPaused", "False", None, None),
|
|
"queue_size": (
|
|
"RemainingSizeMB",
|
|
"512",
|
|
UnitOfInformation.MEGABYTES,
|
|
SensorDeviceClass.DATA_SIZE,
|
|
),
|
|
"uptime": ("UpTimeSec", uptime.isoformat(), None, SensorDeviceClass.TIMESTAMP),
|
|
"speed_limit": (
|
|
"DownloadLimit",
|
|
"1.0",
|
|
UnitOfDataRate.MEGABYTES_PER_SECOND,
|
|
SensorDeviceClass.DATA_RATE,
|
|
),
|
|
}
|
|
|
|
for sensor_id, data in sensors.items():
|
|
entity_entry = entity_registry.async_get(f"sensor.nzbgettest_{sensor_id}")
|
|
assert entity_entry
|
|
assert entity_entry.original_device_class == data[3]
|
|
assert entity_entry.unique_id == f"{entry.entry_id}_{data[0]}"
|
|
|
|
state = hass.states.get(f"sensor.nzbgettest_{sensor_id}")
|
|
assert state
|
|
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == data[2]
|
|
assert state.state == data[1]
|
|
|
|
|
|
@pytest.mark.usefixtures("nzbget_api")
|
|
async def test_sensor_name_from_entry_title(hass: HomeAssistant) -> None:
|
|
"""Test sensors are named from the entry title when no legacy name is stored."""
|
|
entry = MockConfigEntry(
|
|
domain=DOMAIN,
|
|
title="10.10.10.30",
|
|
data={
|
|
CONF_HOST: "10.10.10.30",
|
|
CONF_PASSWORD: "",
|
|
CONF_PORT: 6789,
|
|
CONF_SSL: False,
|
|
CONF_USERNAME: "",
|
|
CONF_VERIFY_SSL: False,
|
|
},
|
|
options=ENTRY_OPTIONS,
|
|
)
|
|
entry.add_to_hass(hass)
|
|
|
|
await hass.config_entries.async_setup(entry.entry_id)
|
|
await hass.async_block_till_done()
|
|
|
|
state = hass.states.get("sensor.10_10_10_30_speed")
|
|
assert state
|
|
assert state.name == "10.10.10.30 Speed"
|