Use more state attribute name constants (#40428)

This commit is contained in:
Ville Skyttä 2020-09-22 00:03:39 +03:00 committed by GitHub
parent f78391ce2a
commit 5e90a4d000
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 231 additions and 156 deletions

View File

@ -6,6 +6,7 @@ import voluptuous as vol
from homeassistant.const import (
ATTR_CODE,
ATTR_ENTITY_ID,
ATTR_SUPPORTED_FEATURES,
CONF_CODE,
CONF_DEVICE_ID,
CONF_DOMAIN,
@ -56,7 +57,7 @@ async def async_get_actions(hass: HomeAssistant, device_id: str) -> List[dict]:
if state is None:
continue
supported_features = state.attributes["supported_features"]
supported_features = state.attributes[ATTR_SUPPORTED_FEATURES]
# Add actions for each entity that belongs to this integration
if supported_features & SUPPORT_ALARM_ARM_AWAY:

View File

@ -11,6 +11,7 @@ from homeassistant.components.alarm_control_panel.const import (
)
from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_SUPPORTED_FEATURES,
CONF_CONDITION,
CONF_DEVICE_ID,
CONF_DOMAIN,
@ -73,7 +74,7 @@ async def async_get_conditions(
if state is None:
continue
supported_features = state.attributes["supported_features"]
supported_features = state.attributes[ATTR_SUPPORTED_FEATURES]
# Add conditions for each entity that belongs to this integration
conditions += [

View File

@ -12,6 +12,7 @@ from homeassistant.components.automation import AutomationActionType
from homeassistant.components.device_automation import TRIGGER_BASE_SCHEMA
from homeassistant.components.homeassistant.triggers import state as state_trigger
from homeassistant.const import (
ATTR_SUPPORTED_FEATURES,
CONF_DEVICE_ID,
CONF_DOMAIN,
CONF_ENTITY_ID,
@ -64,7 +65,7 @@ async def async_get_triggers(hass: HomeAssistant, device_id: str) -> List[dict]:
if entity_state is None:
continue
supported_features = entity_state.attributes["supported_features"]
supported_features = entity_state.attributes[ATTR_SUPPORTED_FEATURES]
# Add triggers for each entity that belongs to this integration
triggers += [

View File

@ -17,6 +17,7 @@ from homeassistant.components import (
from homeassistant.components.climate import const as climate
from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_ENTITY_PICTURE,
ATTR_SUPPORTED_FEATURES,
ATTR_TEMPERATURE,
SERVICE_ALARM_ARM_AWAY,
@ -1532,7 +1533,7 @@ async def async_api_initialize_camera_stream(hass, config, directive, context):
"""Process a InitializeCameraStreams request."""
entity = directive.entity
stream_source = await camera.async_request_stream(hass, entity.entity_id, fmt="hls")
camera_image = hass.states.get(entity.entity_id).attributes["entity_picture"]
camera_image = hass.states.get(entity.entity_id).attributes[ATTR_ENTITY_PICTURE]
try:
external_url = network.get_url(

View File

@ -5,6 +5,7 @@ import voluptuous as vol
from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_SUPPORTED_FEATURES,
CONF_DEVICE_ID,
CONF_DOMAIN,
CONF_ENTITY_ID,
@ -61,7 +62,7 @@ async def async_get_actions(hass: HomeAssistant, device_id: str) -> List[dict]:
CONF_TYPE: "set_hvac_mode",
}
)
if state.attributes["supported_features"] & const.SUPPORT_PRESET_MODE:
if state.attributes[ATTR_SUPPORTED_FEATURES] & const.SUPPORT_PRESET_MODE:
actions.append(
{
CONF_DEVICE_ID: device_id,

View File

@ -5,6 +5,7 @@ import voluptuous as vol
from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_SUPPORTED_FEATURES,
CONF_CONDITION,
CONF_DEVICE_ID,
CONF_DOMAIN,
@ -63,7 +64,10 @@ async def async_get_conditions(
}
)
if state and state.attributes["supported_features"] & const.SUPPORT_PRESET_MODE:
if (
state
and state.attributes[ATTR_SUPPORTED_FEATURES] & const.SUPPORT_PRESET_MODE
):
conditions.append(
{
CONF_CONDITION: "device",

View File

@ -6,6 +6,7 @@ import dweepy
import voluptuous as vol
from homeassistant.const import (
ATTR_FRIENDLY_NAME,
CONF_NAME,
CONF_WHITELIST,
EVENT_STATE_CHANGED,
@ -58,7 +59,7 @@ def setup(hass, config):
except ValueError:
_state = state.state
json_body[state.attributes.get("friendly_name")] = _state
json_body[state.attributes.get(ATTR_FRIENDLY_NAME)] = _state
send_data(name, json_body)

View File

@ -14,6 +14,7 @@ from homeassistant.components.alarm_control_panel.const import (
from homeassistant.const import (
ATTR_CODE,
ATTR_ENTITY_ID,
ATTR_SUPPORTED_FEATURES,
SERVICE_ALARM_ARM_AWAY,
SERVICE_ALARM_ARM_HOME,
SERVICE_ALARM_ARM_NIGHT,
@ -71,7 +72,7 @@ class SecuritySystem(HomeAccessory):
self._alarm_code = self.config.get(ATTR_CODE)
supported_states = state.attributes.get(
"supported_features",
ATTR_SUPPORTED_FEATURES,
(
SUPPORT_ALARM_ARM_HOME
| SUPPORT_ALARM_ARM_AWAY

View File

@ -6,6 +6,7 @@ import voluptuous as vol
from homeassistant.components.device_automation import toggle_entity
from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_SUPPORTED_FEATURES,
CONF_DEVICE_ID,
CONF_DOMAIN,
CONF_ENTITY_ID,
@ -63,7 +64,7 @@ async def async_get_actions(hass: HomeAssistant, device_id: str) -> List[dict]:
if state is None:
continue
if state.attributes["supported_features"] & const.SUPPORT_MODES:
if state.attributes[ATTR_SUPPORTED_FEATURES] & const.SUPPORT_MODES:
actions.append(
{
CONF_DEVICE_ID: device_id,

View File

@ -6,6 +6,7 @@ import voluptuous as vol
from homeassistant.components.device_automation import toggle_entity
from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_SUPPORTED_FEATURES,
CONF_CONDITION,
CONF_DEVICE_ID,
CONF_DOMAIN,
@ -48,7 +49,7 @@ async def async_get_conditions(
state = hass.states.get(entry.entity_id)
if state and state.attributes["supported_features"] & const.SUPPORT_MODES:
if state and state.attributes[ATTR_SUPPORTED_FEATURES] & const.SUPPORT_MODES:
conditions.append(
{
CONF_CONDITION: "device",

View File

@ -26,6 +26,7 @@ from homeassistant.const import (
ATTR_DOMAIN,
ATTR_SERVICE,
ATTR_SERVICE_DATA,
ATTR_SUPPORTED_FEATURES,
CONF_WEBHOOK_ID,
HTTP_BAD_REQUEST,
HTTP_CREATED,
@ -267,7 +268,7 @@ async def webhook_stream_camera(hass, config_entry, data):
resp = {"mjpeg_path": "/api/camera_proxy_stream/%s" % (camera.entity_id)}
if camera.attributes["supported_features"] & CAMERA_SUPPORT_STREAM:
if camera.attributes[ATTR_SUPPORTED_FEATURES] & CAMERA_SUPPORT_STREAM:
try:
resp["hls_path"] = await hass.components.camera.async_request_stream(
camera.entity_id, "hls"

View File

@ -9,7 +9,12 @@ import voluptuous as vol
from homeassistant import config_entries
from homeassistant.components import mqtt
from homeassistant.const import CONF_WEBHOOK_ID
from homeassistant.const import (
ATTR_GPS_ACCURACY,
ATTR_LATITUDE,
ATTR_LONGITUDE,
CONF_WEBHOOK_ID,
)
from homeassistant.core import callback
import homeassistant.helpers.config_validation as cv
from homeassistant.setup import async_when_setup
@ -292,9 +297,9 @@ class OwnTracksContext:
device_tracker_state = hass.states.get(f"device_tracker.{dev_id}")
if device_tracker_state is not None:
acc = device_tracker_state.attributes.get("gps_accuracy")
lat = device_tracker_state.attributes.get("latitude")
lon = device_tracker_state.attributes.get("longitude")
acc = device_tracker_state.attributes.get(ATTR_GPS_ACCURACY)
lat = device_tracker_state.attributes.get(ATTR_LATITUDE)
lon = device_tracker_state.attributes.get(ATTR_LONGITUDE)
if lat is not None and lon is not None:
kwargs["gps"] = (lat, lon)

View File

@ -10,7 +10,7 @@ from homeassistant.components.device_tracker import (
SOURCE_TYPE_BLUETOOTH_LE,
SOURCE_TYPE_GPS,
)
from homeassistant.const import STATE_HOME
from homeassistant.const import ATTR_LATITUDE, ATTR_LONGITUDE, STATE_HOME
from homeassistant.util import decorator, slugify
from .helper import supports_encryption
@ -97,7 +97,10 @@ def _set_gps_from_zone(kwargs, location, zone):
Async friendly.
"""
if zone is not None:
kwargs["gps"] = (zone.attributes["latitude"], zone.attributes["longitude"])
kwargs["gps"] = (
zone.attributes[ATTR_LATITUDE],
zone.attributes[ATTR_LONGITUDE],
)
kwargs["gps_accuracy"] = zone.attributes["radius"]
kwargs["location_name"] = location
return kwargs

View File

@ -19,7 +19,9 @@ from homeassistant.components.humidifier.const import (
ATTR_MODE,
)
from homeassistant.const import (
ATTR_BATTERY_LEVEL,
ATTR_DEVICE_CLASS,
ATTR_FRIENDLY_NAME,
ATTR_TEMPERATURE,
ATTR_UNIT_OF_MEASUREMENT,
CONTENT_TYPE_TEXT_PLAIN,
@ -234,7 +236,7 @@ class PrometheusMetrics:
return {
"entity": state.entity_id,
"domain": state.domain,
"friendly_name": state.attributes.get("friendly_name"),
"friendly_name": state.attributes.get(ATTR_FRIENDLY_NAME),
}
def _battery(self, state):
@ -245,7 +247,7 @@ class PrometheusMetrics:
"Battery level as a percentage of its capacity",
)
try:
value = float(state.attributes["battery_level"])
value = float(state.attributes[ATTR_BATTERY_LEVEL])
metric.labels(**self._labels(state)).set(value)
except ValueError:
pass

View File

@ -4,6 +4,8 @@ import logging
import voluptuous as vol
from homeassistant.const import (
ATTR_LATITUDE,
ATTR_LONGITUDE,
CONF_DEVICES,
CONF_UNIT_OF_MEASUREMENT,
CONF_ZONE,
@ -149,8 +151,8 @@ class Proximity(Entity):
devices_in_zone = ""
zone_state = self.hass.states.get(self.proximity_zone)
proximity_latitude = zone_state.attributes.get("latitude")
proximity_longitude = zone_state.attributes.get("longitude")
proximity_latitude = zone_state.attributes.get(ATTR_LATITUDE)
proximity_longitude = zone_state.attributes.get(ATTR_LONGITUDE)
# Check for devices in the monitored zone.
for device in self.proximity_devices:
@ -206,8 +208,8 @@ class Proximity(Entity):
dist_to_zone = distance(
proximity_latitude,
proximity_longitude,
device_state.attributes["latitude"],
device_state.attributes["longitude"],
device_state.attributes[ATTR_LATITUDE],
device_state.attributes[ATTR_LONGITUDE],
)
# Add the device and distance to a dictionary.
@ -250,14 +252,14 @@ class Proximity(Entity):
old_distance = distance(
proximity_latitude,
proximity_longitude,
old_state.attributes["latitude"],
old_state.attributes["longitude"],
old_state.attributes[ATTR_LATITUDE],
old_state.attributes[ATTR_LONGITUDE],
)
new_distance = distance(
proximity_latitude,
proximity_longitude,
new_state.attributes["latitude"],
new_state.attributes["longitude"],
new_state.attributes[ATTR_LATITUDE],
new_state.attributes[ATTR_LONGITUDE],
)
distance_travelled = round(new_distance - old_distance, 1)

View File

@ -1,6 +1,6 @@
"""The sensor tests for the august platform."""
from homeassistant.const import PERCENTAGE, STATE_UNAVAILABLE
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, PERCENTAGE, STATE_UNAVAILABLE
from tests.components.august.mocks import (
_create_august_with_devices,
@ -75,7 +75,7 @@ async def test_create_lock_with_linked_keypad(hass):
state = hass.states.get("sensor.front_door_lock_keypad_battery")
assert state.state == "60"
assert state.attributes["unit_of_measurement"] == PERCENTAGE
assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == PERCENTAGE
entry = entity_registry.async_get("sensor.front_door_lock_keypad_battery")
assert entry
assert entry.unique_id == "5bc65c24e6ef2a263e1450a8_linked_keypad_battery"
@ -105,7 +105,7 @@ async def test_create_lock_with_low_battery_linked_keypad(hass):
state = hass.states.get("sensor.front_door_lock_keypad_battery")
assert state.state == "10"
assert state.attributes["unit_of_measurement"] == PERCENTAGE
assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == PERCENTAGE
entry = entity_registry.async_get("sensor.front_door_lock_keypad_battery")
assert entry
assert entry.unique_id == "5bc65c24e6ef2a263e1450a8_linked_keypad_battery"

View File

@ -4,6 +4,7 @@ from collections import OrderedDict
import pytest
from homeassistant.components.config import entity_registry
from homeassistant.const import ATTR_ICON
from homeassistant.helpers.entity_registry import RegistryEntry
from tests.common import MockEntity, MockEntityPlatform, mock_registry
@ -140,7 +141,7 @@ async def test_update_entity(hass, client):
state = hass.states.get("test_domain.world")
assert state is not None
assert state.name == "before update"
assert state.attributes["icon"] == "icon:before update"
assert state.attributes[ATTR_ICON] == "icon:before update"
# UPDATE NAME & ICON
await client.send_json(
@ -171,7 +172,7 @@ async def test_update_entity(hass, client):
state = hass.states.get("test_domain.world")
assert state.name == "after update"
assert state.attributes["icon"] == "icon:after update"
assert state.attributes[ATTR_ICON] == "icon:after update"
# UPDATE DISABLED_BY TO USER
await client.send_json(

View File

@ -8,7 +8,12 @@ from homeassistant.components.demo.geo_location import (
DEFAULT_UPDATE_INTERVAL,
NUMBER_OF_DEMO_DEVICES,
)
from homeassistant.const import LENGTH_KILOMETERS
from homeassistant.const import (
ATTR_LATITUDE,
ATTR_LONGITUDE,
ATTR_UNIT_OF_MEASUREMENT,
LENGTH_KILOMETERS,
)
from homeassistant.setup import setup_component
import homeassistant.util.dt as dt_util
@ -59,13 +64,14 @@ class TestDemoPlatform(unittest.TestCase):
# ignore home zone state
continue
assert (
abs(state.attributes["latitude"] - self.hass.config.latitude) < 1.0
)
assert (
abs(state.attributes["longitude"] - self.hass.config.longitude)
abs(state.attributes[ATTR_LATITUDE] - self.hass.config.latitude)
< 1.0
)
assert state.attributes["unit_of_measurement"] == LENGTH_KILOMETERS
assert (
abs(state.attributes[ATTR_LONGITUDE] - self.hass.config.longitude)
< 1.0
)
assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == LENGTH_KILOMETERS
# Update (replaces 1 device).
fire_time_changed(self.hass, utcnow + DEFAULT_UPDATE_INTERVAL)

View File

@ -3,6 +3,7 @@ import pytest
import voluptuous as vol
import homeassistant.components.media_player as mp
from homeassistant.const import ATTR_SUPPORTED_FEATURES
from homeassistant.helpers.aiohttp_client import DATA_CLIENTSESSION
from homeassistant.setup import async_setup_component
@ -203,7 +204,7 @@ async def test_seek(hass, mock_media_seek):
await hass.async_block_till_done()
ent_id = "media_player.living_room"
state = hass.states.get(ent_id)
assert state.attributes["supported_features"] & mp.SUPPORT_SEEK
assert state.attributes[ATTR_SUPPORTED_FEATURES] & mp.SUPPORT_SEEK
assert not mock_media_seek.called
with pytest.raises(vol.Invalid):
await common.async_media_seek(hass, None, ent_id)

View File

@ -2,6 +2,8 @@
from dynalite_devices_lib.cover import DynaliteTimeCoverWithTiltDevice
import pytest
from homeassistant.const import ATTR_DEVICE_CLASS, ATTR_FRIENDLY_NAME
from .common import (
ATTR_ARGS,
ATTR_METHOD,
@ -24,7 +26,7 @@ async def test_cover_setup(hass, mock_device):
"""Test a successful setup."""
await create_entity_from_device(hass, mock_device)
entity_state = hass.states.get("cover.name")
assert entity_state.attributes["friendly_name"] == mock_device.name
assert entity_state.attributes[ATTR_FRIENDLY_NAME] == mock_device.name
assert (
entity_state.attributes["current_position"]
== mock_device.current_cover_position
@ -33,7 +35,7 @@ async def test_cover_setup(hass, mock_device):
entity_state.attributes["current_tilt_position"]
== mock_device.current_cover_tilt_position
)
assert entity_state.attributes["device_class"] == mock_device.device_class
assert entity_state.attributes[ATTR_DEVICE_CLASS] == mock_device.device_class
await run_service_tests(
hass,
mock_device,

View File

@ -4,6 +4,7 @@ from dynalite_devices_lib.light import DynaliteChannelLightDevice
import pytest
from homeassistant.components.light import SUPPORT_BRIGHTNESS
from homeassistant.const import ATTR_FRIENDLY_NAME, ATTR_SUPPORTED_FEATURES
from .common import (
ATTR_METHOD,
@ -25,9 +26,9 @@ async def test_light_setup(hass, mock_device):
"""Test a successful setup."""
await create_entity_from_device(hass, mock_device)
entity_state = hass.states.get("light.name")
assert entity_state.attributes["friendly_name"] == mock_device.name
assert entity_state.attributes[ATTR_FRIENDLY_NAME] == mock_device.name
assert entity_state.attributes["brightness"] == mock_device.brightness
assert entity_state.attributes["supported_features"] == SUPPORT_BRIGHTNESS
assert entity_state.attributes[ATTR_SUPPORTED_FEATURES] == SUPPORT_BRIGHTNESS
await run_service_tests(
hass,
mock_device,

View File

@ -3,6 +3,8 @@
from dynalite_devices_lib.switch import DynalitePresetSwitchDevice
import pytest
from homeassistant.const import ATTR_FRIENDLY_NAME
from .common import (
ATTR_METHOD,
ATTR_SERVICE,
@ -22,7 +24,7 @@ async def test_switch_setup(hass, mock_device):
"""Test a successful setup."""
await create_entity_from_device(hass, mock_device)
entity_state = hass.states.get("switch.name")
assert entity_state.attributes["friendly_name"] == mock_device.name
assert entity_state.attributes[ATTR_FRIENDLY_NAME] == mock_device.name
await run_service_tests(
hass,
mock_device,

View File

@ -5,6 +5,7 @@ import aiohttp
import pytest
from homeassistant import config_entries
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT
from homeassistant.setup import async_setup_component
import homeassistant.util.dt as dt_util
@ -250,7 +251,7 @@ async def test_reading_is_sampled(hass, mock_get_station):
state = hass.states.get("sensor.my_station_water_level_stage")
assert state.state == "5"
assert state.attributes["unit_of_measurement"] == "m"
assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == "m"
async def test_multiple_readings_are_sampled(hass, mock_get_station):
@ -287,11 +288,11 @@ async def test_multiple_readings_are_sampled(hass, mock_get_station):
state = hass.states.get("sensor.my_station_water_level_stage")
assert state.state == "5"
assert state.attributes["unit_of_measurement"] == "m"
assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == "m"
state = hass.states.get("sensor.my_station_water_level_second_stage")
assert state.state == "4"
assert state.attributes["unit_of_measurement"] == "m"
assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == "m"
async def test_ignore_no_latest_reading(hass, mock_get_station):
@ -327,7 +328,7 @@ async def test_ignore_no_latest_reading(hass, mock_get_station):
state = hass.states.get("sensor.my_station_water_level_stage")
assert state.state == "5"
assert state.attributes["unit_of_measurement"] == "m"
assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == "m"
state = hass.states.get("sensor.my_station_water_level_second_stage")
assert state is None
@ -357,7 +358,7 @@ async def test_mark_existing_as_unavailable_if_no_latest(hass, mock_get_station)
state = hass.states.get("sensor.my_station_water_level_stage")
assert state.state == "5"
assert state.attributes["unit_of_measurement"] == "m"
assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == "m"
await poll(
{

View File

@ -6,6 +6,8 @@ from homeassistant.components import zone
from homeassistant.components.geofency import CONF_MOBILE_BEACONS, DOMAIN
from homeassistant.config import async_process_ha_core_config
from homeassistant.const import (
ATTR_LATITUDE,
ATTR_LONGITUDE,
HTTP_OK,
HTTP_UNPROCESSABLE_ENTITY,
STATE_HOME,
@ -316,5 +318,5 @@ async def test_load_unload_entry(hass, geofency_client, webhook_id):
assert state_1 is not state_2
assert STATE_HOME == state_2.state
assert state_2.attributes["latitude"] == HOME_LATITUDE
assert state_2.attributes["longitude"] == HOME_LONGITUDE
assert state_2.attributes[ATTR_LATITUDE] == HOME_LATITUDE
assert state_2.attributes[ATTR_LONGITUDE] == HOME_LONGITUDE

View File

@ -12,7 +12,12 @@ from homeassistant.components.rflink import (
EVENT_KEY_SENSOR,
TMP_ENTITY,
)
from homeassistant.const import PERCENTAGE, STATE_UNKNOWN, TEMP_CELSIUS
from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
PERCENTAGE,
STATE_UNKNOWN,
TEMP_CELSIUS,
)
from tests.components.rflink.test_init import mock_rflink
@ -42,7 +47,7 @@ async def test_default_setup(hass, monkeypatch):
config_sensor = hass.states.get("sensor.test")
assert config_sensor
assert config_sensor.state == "unknown"
assert config_sensor.attributes["unit_of_measurement"] == TEMP_CELSIUS
assert config_sensor.attributes[ATTR_UNIT_OF_MEASUREMENT] == TEMP_CELSIUS
# test event for config sensor
event_callback(
@ -62,7 +67,7 @@ async def test_default_setup(hass, monkeypatch):
new_sensor = hass.states.get("sensor.test2")
assert new_sensor
assert new_sensor.state == "0"
assert new_sensor.attributes["unit_of_measurement"] == TEMP_CELSIUS
assert new_sensor.attributes[ATTR_UNIT_OF_MEASUREMENT] == TEMP_CELSIUS
assert new_sensor.attributes["icon"] == "mdi:thermometer"
@ -160,7 +165,7 @@ async def test_aliases(hass, monkeypatch):
updated_sensor = hass.states.get("sensor.test_02")
assert updated_sensor
assert updated_sensor.state == "65"
assert updated_sensor.attributes["unit_of_measurement"] == PERCENTAGE
assert updated_sensor.attributes[ATTR_UNIT_OF_MEASUREMENT] == PERCENTAGE
async def test_race_condition(hass, monkeypatch):

View File

@ -2,7 +2,7 @@
import pytest
from homeassistant.components.rfxtrx.const import ATTR_EVENT
from homeassistant.const import PERCENTAGE, TEMP_CELSIUS
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, PERCENTAGE, TEMP_CELSIUS
from homeassistant.core import State
from homeassistant.setup import async_setup_component
@ -35,7 +35,7 @@ async def test_one_sensor(hass, rfxtrx):
state.attributes.get("friendly_name")
== "WT260,WT260H,WT440H,WT450,WT450H 05:02 Temperature"
)
assert state.attributes.get("unit_of_measurement") == TEMP_CELSIUS
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == TEMP_CELSIUS
@pytest.mark.parametrize(
@ -75,31 +75,31 @@ async def test_one_sensor_no_datatype(hass, rfxtrx):
assert state
assert state.state == "unknown"
assert state.attributes.get("friendly_name") == f"{base_name} Temperature"
assert state.attributes.get("unit_of_measurement") == TEMP_CELSIUS
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == TEMP_CELSIUS
state = hass.states.get(f"{base_id}_humidity")
assert state
assert state.state == "unknown"
assert state.attributes.get("friendly_name") == f"{base_name} Humidity"
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
state = hass.states.get(f"{base_id}_humidity_status")
assert state
assert state.state == "unknown"
assert state.attributes.get("friendly_name") == f"{base_name} Humidity status"
assert state.attributes.get("unit_of_measurement") == ""
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == ""
state = hass.states.get(f"{base_id}_rssi_numeric")
assert state
assert state.state == "unknown"
assert state.attributes.get("friendly_name") == f"{base_name} Rssi numeric"
assert state.attributes.get("unit_of_measurement") == "dBm"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
state = hass.states.get(f"{base_id}_battery_numeric")
assert state
assert state.state == "unknown"
assert state.attributes.get("friendly_name") == f"{base_name} Battery numeric"
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
async def test_several_sensors(hass, rfxtrx):
@ -127,7 +127,7 @@ async def test_several_sensors(hass, rfxtrx):
state.attributes.get("friendly_name")
== "WT260,WT260H,WT440H,WT450,WT450H 05:02 Temperature"
)
assert state.attributes.get("unit_of_measurement") == TEMP_CELSIUS
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == TEMP_CELSIUS
state = hass.states.get("sensor.wt260_wt260h_wt440h_wt450_wt450h_06_01_temperature")
assert state
@ -136,7 +136,7 @@ async def test_several_sensors(hass, rfxtrx):
state.attributes.get("friendly_name")
== "WT260,WT260H,WT440H,WT450,WT450H 06:01 Temperature"
)
assert state.attributes.get("unit_of_measurement") == TEMP_CELSIUS
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == TEMP_CELSIUS
state = hass.states.get("sensor.wt260_wt260h_wt440h_wt450_wt450h_06_01_humidity")
assert state
@ -145,7 +145,7 @@ async def test_several_sensors(hass, rfxtrx):
state.attributes.get("friendly_name")
== "WT260,WT260H,WT440H,WT450,WT450H 06:01 Humidity"
)
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
async def test_discover_sensor(hass, rfxtrx_automatic):
@ -159,27 +159,27 @@ async def test_discover_sensor(hass, rfxtrx_automatic):
state = hass.states.get(f"{base_id}_humidity")
assert state
assert state.state == "27"
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
state = hass.states.get(f"{base_id}_humidity_status")
assert state
assert state.state == "normal"
assert state.attributes.get("unit_of_measurement") == ""
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == ""
state = hass.states.get(f"{base_id}_rssi_numeric")
assert state
assert state.state == "-64"
assert state.attributes.get("unit_of_measurement") == "dBm"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
state = hass.states.get(f"{base_id}_temperature")
assert state
assert state.state == "18.4"
assert state.attributes.get("unit_of_measurement") == TEMP_CELSIUS
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == TEMP_CELSIUS
state = hass.states.get(f"{base_id}_battery_numeric")
assert state
assert state.state == "90"
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
# 2
await rfxtrx.signal("0a52080405020095240279")
@ -188,27 +188,27 @@ async def test_discover_sensor(hass, rfxtrx_automatic):
assert state
assert state.state == "36"
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
state = hass.states.get(f"{base_id}_humidity_status")
assert state
assert state.state == "normal"
assert state.attributes.get("unit_of_measurement") == ""
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == ""
state = hass.states.get(f"{base_id}_rssi_numeric")
assert state
assert state.state == "-64"
assert state.attributes.get("unit_of_measurement") == "dBm"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
state = hass.states.get(f"{base_id}_temperature")
assert state
assert state.state == "14.9"
assert state.attributes.get("unit_of_measurement") == TEMP_CELSIUS
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == TEMP_CELSIUS
state = hass.states.get(f"{base_id}_battery_numeric")
assert state
assert state.state == "90"
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
# 1 Update
await rfxtrx.signal("0a52085e070100b31b0279")
@ -217,27 +217,27 @@ async def test_discover_sensor(hass, rfxtrx_automatic):
state = hass.states.get(f"{base_id}_humidity")
assert state
assert state.state == "27"
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
state = hass.states.get(f"{base_id}_humidity_status")
assert state
assert state.state == "normal"
assert state.attributes.get("unit_of_measurement") == ""
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == ""
state = hass.states.get(f"{base_id}_rssi_numeric")
assert state
assert state.state == "-64"
assert state.attributes.get("unit_of_measurement") == "dBm"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
state = hass.states.get(f"{base_id}_temperature")
assert state
assert state.state == "17.9"
assert state.attributes.get("unit_of_measurement") == TEMP_CELSIUS
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == TEMP_CELSIUS
state = hass.states.get(f"{base_id}_battery_numeric")
assert state
assert state.state == "90"
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
assert len(hass.states.async_all()) == 10
@ -314,13 +314,13 @@ async def test_rssi_sensor(hass, rfxtrx):
assert state
assert state.state == "unknown"
assert state.attributes.get("friendly_name") == "PT2262 22670e Rssi numeric"
assert state.attributes.get("unit_of_measurement") == "dBm"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
state = hass.states.get("sensor.ac_213c7f2_48_rssi_numeric")
assert state
assert state.state == "unknown"
assert state.attributes.get("friendly_name") == "AC 213c7f2:48 Rssi numeric"
assert state.attributes.get("unit_of_measurement") == "dBm"
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == "dBm"
await rfxtrx.signal("0913000022670e013b70")
await rfxtrx.signal("0b1100cd0213c7f230010f71")

View File

@ -2,7 +2,7 @@
import logging
from homeassistant.components.sensor import DOMAIN
from homeassistant.const import VOLT
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, VOLT
from homeassistant.setup import async_setup_component
from tests.common import assert_setup_component
@ -28,7 +28,7 @@ async def test_sma_config(hass):
state = hass.states.get("sensor.current_consumption")
assert state
assert "unit_of_measurement" in state.attributes
assert ATTR_UNIT_OF_MEASUREMENT in state.attributes
assert "current_consumption" not in state.attributes
state = hass.states.get("sensor.my_sensor")

View File

@ -5,7 +5,7 @@ from unittest.mock import patch
import pytest
from homeassistant.components.spaceapi import DOMAIN, SPACEAPI_VERSION, URL_API_SPACEAPI
from homeassistant.const import PERCENTAGE, TEMP_CELSIUS
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, PERCENTAGE, TEMP_CELSIUS
from homeassistant.setup import async_setup_component
from tests.common import mock_coro
@ -76,13 +76,13 @@ def mock_client(hass, hass_client):
hass.loop.run_until_complete(async_setup_component(hass, "spaceapi", CONFIG))
hass.states.async_set(
"test.temp1", 25, attributes={"unit_of_measurement": TEMP_CELSIUS}
"test.temp1", 25, attributes={ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}
)
hass.states.async_set(
"test.temp2", 23, attributes={"unit_of_measurement": TEMP_CELSIUS}
"test.temp2", 23, attributes={ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS}
)
hass.states.async_set(
"test.hum1", 88, attributes={"unit_of_measurement": PERCENTAGE}
"test.hum1", 88, attributes={ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE}
)
return hass.loop.run_until_complete(hass_client())

View File

@ -1,7 +1,12 @@
"""Tests for the Start.ca sensor platform."""
from homeassistant.bootstrap import async_setup_component
from homeassistant.components.startca.sensor import StartcaData
from homeassistant.const import DATA_GIGABYTES, HTTP_NOT_FOUND, PERCENTAGE
from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
DATA_GIGABYTES,
HTTP_NOT_FOUND,
PERCENTAGE,
)
from homeassistant.helpers.aiohttp_client import async_get_clientsession
@ -53,51 +58,51 @@ async def test_capped_setup(hass, aioclient_mock):
await hass.async_block_till_done()
state = hass.states.get("sensor.start_ca_usage_ratio")
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
assert state.state == "76.24"
state = hass.states.get("sensor.start_ca_usage")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "304.95"
state = hass.states.get("sensor.start_ca_data_limit")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "400"
state = hass.states.get("sensor.start_ca_used_download")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "304.95"
state = hass.states.get("sensor.start_ca_used_upload")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "6.48"
state = hass.states.get("sensor.start_ca_used_total")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "311.43"
state = hass.states.get("sensor.start_ca_grace_download")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "304.95"
state = hass.states.get("sensor.start_ca_grace_upload")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "6.48"
state = hass.states.get("sensor.start_ca_grace_total")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "311.43"
state = hass.states.get("sensor.start_ca_total_download")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "304.95"
state = hass.states.get("sensor.start_ca_total_upload")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "6.48"
state = hass.states.get("sensor.start_ca_remaining")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "95.05"
@ -149,51 +154,51 @@ async def test_unlimited_setup(hass, aioclient_mock):
await hass.async_block_till_done()
state = hass.states.get("sensor.start_ca_usage_ratio")
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
assert state.state == "0"
state = hass.states.get("sensor.start_ca_usage")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "0.0"
state = hass.states.get("sensor.start_ca_data_limit")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "inf"
state = hass.states.get("sensor.start_ca_used_download")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "0.0"
state = hass.states.get("sensor.start_ca_used_upload")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "0.0"
state = hass.states.get("sensor.start_ca_used_total")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "0.0"
state = hass.states.get("sensor.start_ca_grace_download")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "304.95"
state = hass.states.get("sensor.start_ca_grace_upload")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "6.48"
state = hass.states.get("sensor.start_ca_grace_total")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "311.43"
state = hass.states.get("sensor.start_ca_total_download")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "304.95"
state = hass.states.get("sensor.start_ca_total_upload")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "6.48"
state = hass.states.get("sensor.start_ca_remaining")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "inf"

View File

@ -115,7 +115,7 @@ class TestStatisticsSensor(unittest.TestCase):
assert self.mean == state.attributes.get("mean")
assert self.count == state.attributes.get("count")
assert self.total == state.attributes.get("total")
assert TEMP_CELSIUS == state.attributes.get("unit_of_measurement")
assert TEMP_CELSIUS == state.attributes.get(ATTR_UNIT_OF_MEASUREMENT)
assert self.change == state.attributes.get("change")
assert self.average_change == state.attributes.get("average_change")

View File

@ -1,7 +1,12 @@
"""Tests for the TekSavvy sensor platform."""
from homeassistant.bootstrap import async_setup_component
from homeassistant.components.teksavvy.sensor import TekSavvyData
from homeassistant.const import DATA_GIGABYTES, HTTP_NOT_FOUND, PERCENTAGE
from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
DATA_GIGABYTES,
HTTP_NOT_FOUND,
PERCENTAGE,
)
from homeassistant.helpers.aiohttp_client import async_get_clientsession
@ -47,43 +52,43 @@ async def test_capped_setup(hass, aioclient_mock):
await hass.async_block_till_done()
state = hass.states.get("sensor.teksavvy_data_limit")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "400"
state = hass.states.get("sensor.teksavvy_off_peak_download")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "36.24"
state = hass.states.get("sensor.teksavvy_off_peak_upload")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "1.58"
state = hass.states.get("sensor.teksavvy_off_peak_total")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "37.82"
state = hass.states.get("sensor.teksavvy_on_peak_download")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "226.75"
state = hass.states.get("sensor.teksavvy_on_peak_upload")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "8.82"
state = hass.states.get("sensor.teksavvy_on_peak_total")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "235.57"
state = hass.states.get("sensor.teksavvy_usage_ratio")
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
assert state.state == "56.69"
state = hass.states.get("sensor.teksavvy_usage")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "226.75"
state = hass.states.get("sensor.teksavvy_remaining")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "173.25"
@ -129,43 +134,43 @@ async def test_unlimited_setup(hass, aioclient_mock):
await hass.async_block_till_done()
state = hass.states.get("sensor.teksavvy_data_limit")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "inf"
state = hass.states.get("sensor.teksavvy_off_peak_download")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "36.24"
state = hass.states.get("sensor.teksavvy_off_peak_upload")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "1.58"
state = hass.states.get("sensor.teksavvy_off_peak_total")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "37.82"
state = hass.states.get("sensor.teksavvy_on_peak_download")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "226.75"
state = hass.states.get("sensor.teksavvy_on_peak_upload")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "8.82"
state = hass.states.get("sensor.teksavvy_on_peak_total")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "235.57"
state = hass.states.get("sensor.teksavvy_usage")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "226.75"
state = hass.states.get("sensor.teksavvy_usage_ratio")
assert state.attributes.get("unit_of_measurement") == PERCENTAGE
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == PERCENTAGE
assert state.state == "0"
state = hass.states.get("sensor.teksavvy_remaining")
assert state.attributes.get("unit_of_measurement") == DATA_GIGABYTES
assert state.attributes.get(ATTR_UNIT_OF_MEASUREMENT) == DATA_GIGABYTES
assert state.state == "inf"

View File

@ -12,6 +12,7 @@ from homeassistant.components.utility_meter.const import (
)
from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_UNIT_OF_MEASUREMENT,
ENERGY_KILO_WATT_HOUR,
EVENT_HOMEASSISTANT_START,
)
@ -41,7 +42,9 @@ async def test_services(hass):
hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
entity_id = config[DOMAIN]["energy_bill"]["source"]
hass.states.async_set(entity_id, 1, {"unit_of_measurement": ENERGY_KILO_WATT_HOUR})
hass.states.async_set(
entity_id, 1, {ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR}
)
await hass.async_block_till_done()
now = dt_util.utcnow() + timedelta(seconds=10)
@ -49,7 +52,7 @@ async def test_services(hass):
hass.states.async_set(
entity_id,
3,
{"unit_of_measurement": ENERGY_KILO_WATT_HOUR},
{ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR},
force_update=True,
)
await hass.async_block_till_done()
@ -70,7 +73,7 @@ async def test_services(hass):
hass.states.async_set(
entity_id,
4,
{"unit_of_measurement": ENERGY_KILO_WATT_HOUR},
{ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR},
force_update=True,
)
await hass.async_block_till_done()
@ -91,7 +94,7 @@ async def test_services(hass):
hass.states.async_set(
entity_id,
5,
{"unit_of_measurement": ENERGY_KILO_WATT_HOUR},
{ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR},
force_update=True,
)
await hass.async_block_till_done()

View File

@ -13,6 +13,7 @@ from homeassistant.components.utility_meter.const import (
)
from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_UNIT_OF_MEASUREMENT,
ENERGY_KILO_WATT_HOUR,
EVENT_HOMEASSISTANT_START,
)
@ -52,7 +53,9 @@ async def test_state(hass):
hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
entity_id = config[DOMAIN]["energy_bill"]["source"]
hass.states.async_set(entity_id, 2, {"unit_of_measurement": ENERGY_KILO_WATT_HOUR})
hass.states.async_set(
entity_id, 2, {ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR}
)
await hass.async_block_till_done()
now = dt_util.utcnow() + timedelta(seconds=10)
@ -60,7 +63,7 @@ async def test_state(hass):
hass.states.async_set(
entity_id,
3,
{"unit_of_measurement": ENERGY_KILO_WATT_HOUR},
{ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR},
force_update=True,
)
await hass.async_block_till_done()
@ -91,7 +94,7 @@ async def test_state(hass):
hass.states.async_set(
entity_id,
6,
{"unit_of_measurement": ENERGY_KILO_WATT_HOUR},
{ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR},
force_update=True,
)
await hass.async_block_till_done()
@ -145,7 +148,9 @@ async def test_net_consumption(hass):
hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
entity_id = config[DOMAIN]["energy_bill"]["source"]
hass.states.async_set(entity_id, 2, {"unit_of_measurement": ENERGY_KILO_WATT_HOUR})
hass.states.async_set(
entity_id, 2, {ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR}
)
await hass.async_block_till_done()
now = dt_util.utcnow() + timedelta(seconds=10)
@ -153,7 +158,7 @@ async def test_net_consumption(hass):
hass.states.async_set(
entity_id,
1,
{"unit_of_measurement": ENERGY_KILO_WATT_HOUR},
{ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR},
force_update=True,
)
await hass.async_block_till_done()
@ -178,7 +183,9 @@ async def test_non_net_consumption(hass):
hass.bus.async_fire(EVENT_HOMEASSISTANT_START)
entity_id = config[DOMAIN]["energy_bill"]["source"]
hass.states.async_set(entity_id, 2, {"unit_of_measurement": ENERGY_KILO_WATT_HOUR})
hass.states.async_set(
entity_id, 2, {ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR}
)
await hass.async_block_till_done()
now = dt_util.utcnow() + timedelta(seconds=10)
@ -186,7 +193,7 @@ async def test_non_net_consumption(hass):
hass.states.async_set(
entity_id,
1,
{"unit_of_measurement": ENERGY_KILO_WATT_HOUR},
{ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR},
force_update=True,
)
await hass.async_block_till_done()
@ -224,7 +231,7 @@ async def _test_self_reset(hass, config, start_time, expect_reset=True):
with alter_time(now):
async_fire_time_changed(hass, now)
hass.states.async_set(
entity_id, 1, {"unit_of_measurement": ENERGY_KILO_WATT_HOUR}
entity_id, 1, {ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR}
)
await hass.async_block_till_done()
@ -234,7 +241,7 @@ async def _test_self_reset(hass, config, start_time, expect_reset=True):
hass.states.async_set(
entity_id,
3,
{"unit_of_measurement": ENERGY_KILO_WATT_HOUR},
{ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR},
force_update=True,
)
await hass.async_block_till_done()
@ -246,7 +253,7 @@ async def _test_self_reset(hass, config, start_time, expect_reset=True):
hass.states.async_set(
entity_id,
6,
{"unit_of_measurement": ENERGY_KILO_WATT_HOUR},
{ATTR_UNIT_OF_MEASUREMENT: ENERGY_KILO_WATT_HOUR},
force_update=True,
)
await hass.async_block_till_done()

View File

@ -3,7 +3,7 @@ from typing import Any, Callable, Tuple
import pyvera as pv
from homeassistant.const import PERCENTAGE
from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT, PERCENTAGE
from homeassistant.core import HomeAssistant
from .common import ComponentFactory, new_simple_controller_config
@ -44,7 +44,9 @@ async def run_sensor_test(
state = hass.states.get(entity_id)
assert state.state == state_value
if assert_unit_of_measurement:
assert state.attributes["unit_of_measurement"] == assert_unit_of_measurement
assert (
state.attributes[ATTR_UNIT_OF_MEASUREMENT] == assert_unit_of_measurement
)
async def test_temperature_sensor_f(

View File

@ -3,7 +3,12 @@ import aiohttp
from pytest import raises
import homeassistant.components.wunderground.sensor as wunderground
from homeassistant.const import LENGTH_INCHES, STATE_UNKNOWN, TEMP_CELSIUS
from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
LENGTH_INCHES,
STATE_UNKNOWN,
TEMP_CELSIUS,
)
from homeassistant.exceptions import PlatformNotReady
from homeassistant.setup import async_setup_component
@ -90,7 +95,7 @@ async def test_sensor(hass, aioclient_mock):
state = hass.states.get("sensor.pws_weather")
assert state.state == "Clear"
assert state.name == "Weather Summary"
assert "unit_of_measurement" not in state.attributes
assert ATTR_UNIT_OF_MEASUREMENT not in state.attributes
assert (
state.attributes["entity_picture"] == "https://icons.wxug.com/i/c/k/clear.gif"
)
@ -114,7 +119,7 @@ async def test_sensor(hass, aioclient_mock):
assert state.state == "40"
assert state.name == "Feels Like"
assert "entity_picture" not in state.attributes
assert state.attributes["unit_of_measurement"] == TEMP_CELSIUS
assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == TEMP_CELSIUS
state = hass.states.get("sensor.pws_weather_1d_metric")
assert state.state == "Mostly Cloudy. Fog overnight."
@ -123,7 +128,7 @@ async def test_sensor(hass, aioclient_mock):
state = hass.states.get("sensor.pws_precip_1d_in")
assert state.state == "0.03"
assert state.name == "Precipitation Intensity Today"
assert state.attributes["unit_of_measurement"] == LENGTH_INCHES
assert state.attributes[ATTR_UNIT_OF_MEASUREMENT] == LENGTH_INCHES
async def test_connect_failed(hass, aioclient_mock):

View File

@ -8,6 +8,7 @@ import pytz
from homeassistant.components import group
from homeassistant.const import (
ATTR_UNIT_OF_MEASUREMENT,
LENGTH_METERS,
MASS_GRAMS,
MATCH_ALL,
@ -2271,7 +2272,7 @@ def test_jinja_namespace(hass):
def test_state_with_unit(hass):
"""Test the state_with_unit property helper."""
hass.states.async_set("sensor.test", "23", {"unit_of_measurement": "beers"})
hass.states.async_set("sensor.test", "23", {ATTR_UNIT_OF_MEASUREMENT: "beers"})
hass.states.async_set("sensor.test2", "wow")
tpl = template.Template("{{ states.sensor.test.state_with_unit }}", hass)