mirror of https://github.com/home-assistant/core
146 lines
4.4 KiB
Python
146 lines
4.4 KiB
Python
"""Test for properties for devices common to all entity types."""
|
|
|
|
from google_nest_sdm.device import Device
|
|
|
|
from homeassistant.components.nest.device_info import NestDeviceInfo
|
|
from homeassistant.const import (
|
|
ATTR_IDENTIFIERS,
|
|
ATTR_MANUFACTURER,
|
|
ATTR_MODEL,
|
|
ATTR_NAME,
|
|
ATTR_SUGGESTED_AREA,
|
|
)
|
|
|
|
|
|
def test_device_custom_name() -> None:
|
|
"""Test a device name from an Info trait."""
|
|
device = Device.MakeDevice(
|
|
{
|
|
"name": "some-device-id",
|
|
"type": "sdm.devices.types.DOORBELL",
|
|
"traits": {
|
|
"sdm.devices.traits.Info": {
|
|
"customName": "My Doorbell",
|
|
},
|
|
},
|
|
},
|
|
auth=None,
|
|
)
|
|
|
|
device_info = NestDeviceInfo(device)
|
|
assert device_info.device_name == "My Doorbell"
|
|
assert device_info.device_model == "Doorbell"
|
|
assert device_info.device_brand == "Google Nest"
|
|
assert device_info.device_info == {
|
|
ATTR_IDENTIFIERS: {("nest", "some-device-id")},
|
|
ATTR_NAME: "My Doorbell",
|
|
ATTR_MANUFACTURER: "Google Nest",
|
|
ATTR_MODEL: "Doorbell",
|
|
ATTR_SUGGESTED_AREA: None,
|
|
}
|
|
|
|
|
|
def test_device_name_room() -> None:
|
|
"""Test a device name from the room name."""
|
|
device = Device.MakeDevice(
|
|
{
|
|
"name": "some-device-id",
|
|
"type": "sdm.devices.types.DOORBELL",
|
|
"parentRelations": [
|
|
{"parent": "some-structure-id", "displayName": "Some Room"}
|
|
],
|
|
},
|
|
auth=None,
|
|
)
|
|
|
|
device_info = NestDeviceInfo(device)
|
|
assert device_info.device_name == "Some Room"
|
|
assert device_info.device_model == "Doorbell"
|
|
assert device_info.device_brand == "Google Nest"
|
|
assert device_info.device_info == {
|
|
ATTR_IDENTIFIERS: {("nest", "some-device-id")},
|
|
ATTR_NAME: "Some Room",
|
|
ATTR_MANUFACTURER: "Google Nest",
|
|
ATTR_MODEL: "Doorbell",
|
|
ATTR_SUGGESTED_AREA: "Some Room",
|
|
}
|
|
|
|
|
|
def test_device_no_name() -> None:
|
|
"""Test a device that has a name inferred from the type."""
|
|
device = Device.MakeDevice(
|
|
{"name": "some-device-id", "type": "sdm.devices.types.DOORBELL", "traits": {}},
|
|
auth=None,
|
|
)
|
|
|
|
device_info = NestDeviceInfo(device)
|
|
assert device_info.device_name == "Doorbell"
|
|
assert device_info.device_model == "Doorbell"
|
|
assert device_info.device_brand == "Google Nest"
|
|
assert device_info.device_info == {
|
|
ATTR_IDENTIFIERS: {("nest", "some-device-id")},
|
|
ATTR_NAME: "Doorbell",
|
|
ATTR_MANUFACTURER: "Google Nest",
|
|
ATTR_MODEL: "Doorbell",
|
|
ATTR_SUGGESTED_AREA: None,
|
|
}
|
|
|
|
|
|
def test_device_invalid_type() -> None:
|
|
"""Test a device with a type name that is not recognized."""
|
|
device = Device.MakeDevice(
|
|
{
|
|
"name": "some-device-id",
|
|
"type": "sdm.devices.types.INVALID_TYPE",
|
|
"traits": {
|
|
"sdm.devices.traits.Info": {
|
|
"customName": "My Doorbell",
|
|
},
|
|
},
|
|
},
|
|
auth=None,
|
|
)
|
|
|
|
device_info = NestDeviceInfo(device)
|
|
assert device_info.device_name == "My Doorbell"
|
|
assert device_info.device_model is None
|
|
assert device_info.device_brand == "Google Nest"
|
|
assert device_info.device_info == {
|
|
ATTR_IDENTIFIERS: {("nest", "some-device-id")},
|
|
ATTR_NAME: "My Doorbell",
|
|
ATTR_MANUFACTURER: "Google Nest",
|
|
ATTR_MODEL: None,
|
|
ATTR_SUGGESTED_AREA: None,
|
|
}
|
|
|
|
|
|
def test_suggested_area() -> None:
|
|
"""Test the suggested area with different device name and room name."""
|
|
device = Device.MakeDevice(
|
|
{
|
|
"name": "some-device-id",
|
|
"type": "sdm.devices.types.DOORBELL",
|
|
"traits": {
|
|
"sdm.devices.traits.Info": {
|
|
"customName": "My Doorbell",
|
|
},
|
|
},
|
|
"parentRelations": [
|
|
{"parent": "some-structure-id", "displayName": "Some Room"}
|
|
],
|
|
},
|
|
auth=None,
|
|
)
|
|
|
|
device_info = NestDeviceInfo(device)
|
|
assert device_info.device_name == "My Doorbell"
|
|
assert device_info.device_model == "Doorbell"
|
|
assert device_info.device_brand == "Google Nest"
|
|
assert device_info.device_info == {
|
|
ATTR_IDENTIFIERS: {("nest", "some-device-id")},
|
|
ATTR_NAME: "My Doorbell",
|
|
ATTR_MANUFACTURER: "Google Nest",
|
|
ATTR_MODEL: "Doorbell",
|
|
ATTR_SUGGESTED_AREA: "Some Room",
|
|
}
|