"""Test for properties for devices common to all entity types.""" from google_nest_sdm.device import Device from homeassistant.components.nest.device_info import DeviceInfo def test_device_custom_name(): """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 = DeviceInfo(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 == { "identifiers": {("nest", "some-device-id")}, "name": "My Doorbell", "manufacturer": "Google Nest", "model": "Doorbell", } def test_device_name_room(): """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 = DeviceInfo(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 == { "identifiers": {("nest", "some-device-id")}, "name": "Some Room", "manufacturer": "Google Nest", "model": "Doorbell", } def test_device_no_name(): """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 = DeviceInfo(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 == { "identifiers": {("nest", "some-device-id")}, "name": "Doorbell", "manufacturer": "Google Nest", "model": "Doorbell", } def test_device_invalid_type(): """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 = DeviceInfo(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 == { "identifiers": {("nest", "some-device-id")}, "name": "My Doorbell", "manufacturer": "Google Nest", "model": None, }