Fix nzbget sensors (#39833)

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
This commit is contained in:
Chris Talkington 2020-09-09 07:56:40 -05:00 committed by GitHub
parent be04f14a78
commit 74219663d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 66 additions and 13 deletions

View File

@ -589,7 +589,6 @@ omit =
homeassistant/components/nut/sensor.py
homeassistant/components/nx584/alarm_control_panel.py
homeassistant/components/nzbget/coordinator.py
homeassistant/components/nzbget/sensor.py
homeassistant/components/obihai/*
homeassistant/components/octoprint/*
homeassistant/components/oem/climate.py

View File

@ -61,7 +61,7 @@ async def async_setup_entry(
)
)
async_add_entities(sensors, True)
async_add_entities(sensors)
class NZBGetSensor(NZBGetEntity, Entity):
@ -108,7 +108,7 @@ class NZBGetSensor(NZBGetEntity, Entity):
@property
def state(self):
"""Return the state of the sensor."""
value = self.coordinator.data.status.get(self._sensor_type)
value = self.coordinator.data["status"].get(self._sensor_type)
if value is None:
_LOGGER.warning("Unable to locate value for %s", self._sensor_type)

View File

@ -48,16 +48,16 @@ YAML_CONFIG = {
MOCK_VERSION = "21.0"
MOCK_STATUS = {
"ArticleCacheMB": "64",
"AverageDownloadRate": "512",
"DownloadPaused": "4",
"DownloadRate": "1000",
"DownloadedSizeMB": "256",
"FreeDiskSpaceMB": "1024",
"PostJobCount": "2",
"PostPaused": "4",
"RemainingSizeMB": "512",
"UpTimeSec": "600",
"ArticleCacheMB": 64,
"AverageDownloadRate": 1250000,
"DownloadPaused": 4,
"DownloadRate": 2500000,
"DownloadedSizeMB": 256,
"FreeDiskSpaceMB": 1024,
"PostJobCount": 2,
"PostPaused": 4,
"RemainingSizeMB": 512,
"UpTimeSec": 600,
}
MOCK_HISTORY = [

View File

@ -0,0 +1,54 @@
"""Test the NZBGet sensors."""
from datetime import timedelta
from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
DATA_MEGABYTES,
DATA_RATE_MEGABYTES_PER_SECOND,
DEVICE_CLASS_TIMESTAMP,
)
from homeassistant.util import dt as dt_util
from . import init_integration
from tests.async_mock import patch
async def test_sensors(hass) -> None:
"""Test the creation and values of the sensors."""
now = dt_util.utcnow().replace(microsecond=0)
with patch("homeassistant.util.dt.utcnow", return_value=now):
entry = await init_integration(hass)
registry = await hass.helpers.entity_registry.async_get_registry()
uptime = now - timedelta(seconds=600)
sensors = {
"article_cache": ("ArticleCacheMB", "64", DATA_MEGABYTES, None),
"average_speed": (
"AverageDownloadRate",
"1.19",
DATA_RATE_MEGABYTES_PER_SECOND,
None,
),
"download_paused": ("DownloadPaused", "4", None, None),
"speed": ("DownloadRate", "2.38", DATA_RATE_MEGABYTES_PER_SECOND, None),
"size": ("DownloadedSizeMB", "256", DATA_MEGABYTES, None),
"disk_free": ("FreeDiskSpaceMB", "1024", DATA_MEGABYTES, None),
"post_processing_jobs": ("PostJobCount", "2", "Jobs", None),
"post_processing_paused": ("PostPaused", "4", None, None),
"queue_size": ("RemainingSizeMB", "512", DATA_MEGABYTES, None),
"uptime": ("UpTimeSec", uptime.isoformat(), None, DEVICE_CLASS_TIMESTAMP),
}
for (sensor_id, data) in sensors.items():
entity_entry = registry.async_get(f"sensor.nzbgettest_{sensor_id}")
assert entity_entry
assert entity_entry.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]