Beispiel #1
0
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 = 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,
    }
Beispiel #2
0
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 = 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,
    }
Beispiel #3
0
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 = 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",
    }
Beispiel #4
0
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 = NestDeviceInfo(device)
    assert device_info.device_name == "My Doorbell"
    assert device_info.device_model == "Unknown"
    assert device_info.device_brand == "Google Nest"
    assert device_info.device_info == {
        "identifiers": {("nest", "some-device-id")},
        "name": "My Doorbell",
        "manufacturer": "Google Nest",
        "model": "Unknown",
    }
Beispiel #5
0
def test_suggested_area():
    """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",
    }
Beispiel #6
0
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 = 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 == {
        "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 = 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 == {
        "identifiers": {("nest", "some-device-id")},
        "name": "Some Room",
        "manufacturer": "Google Nest",
        "model": "Doorbell",
    }
Beispiel #8
0
def _browse_device(device_id: MediaId, device: Device) -> BrowseMediaSource:
    """Return details for the specified device."""
    device_info = NestDeviceInfo(device)
    return BrowseMediaSource(
        domain=DOMAIN,
        identifier=device_id.identifier,
        media_class=MEDIA_CLASS_DIRECTORY,
        media_content_type=MEDIA_TYPE_VIDEO,
        children_media_class=MEDIA_CLASS_VIDEO,
        title=DEVICE_TITLE_FORMAT.format(device_name=device_info.device_name),
        can_play=False,
        can_expand=True,
        thumbnail=None,
        children=[],
    )
Beispiel #9
0
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 = 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 == {
        "identifiers": {("nest", "some-device-id")},
        "name": "Doorbell",
        "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 = 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",
    }