Exemplo n.º 1
0
async def mock_light(hass, mock_entry):
    """Create a mock light entity."""
    await setup.async_setup_component(hass, "persistent_notification", {})

    mock_entry.add_to_hass(hass)

    light = MagicMock(spec=pyzerproc.Light)
    light.address = "AA:BB:CC:DD:EE:FF"
    light.name = "LEDBlue-CCDDEEFF"
    light.connected = False

    mock_state = pyzerproc.LightState(False, (0, 0, 0))

    with patch(
        "homeassistant.components.zerproc.light.pyzerproc.discover",
        return_value=[light],
    ), patch.object(light, "connect"), patch.object(
        light, "get_state", return_value=mock_state
    ):
        await hass.config_entries.async_setup(mock_entry.entry_id)
        await hass.async_block_till_done()

    light.connected = True

    return light
Exemplo n.º 2
0
async def mock_light(hass, mock_entry):
    """Create a mock light entity."""
    await setup.async_setup_component(hass, "persistent_notification", {})

    light = MagicMock(spec=pykulersky.Light)
    light.address = "AA:BB:CC:11:22:33"
    light.name = "Bedroom"
    light.connected = False
    with patch(
            "homeassistant.components.kulersky.light.pykulersky.discover_bluetooth_devices",
            return_value=[{
                "address": "AA:BB:CC:11:22:33",
                "name": "Bedroom",
            }],
    ):
        with patch(
                "homeassistant.components.kulersky.light.pykulersky.Light",
                return_value=light,
        ), patch.object(light, "connect") as mock_connect, patch.object(
                light, "get_color", return_value=(0, 0, 0, 0)):
            mock_entry.add_to_hass(hass)
            await hass.config_entries.async_setup(mock_entry.entry_id)
            await hass.async_block_till_done()

        assert mock_connect.called
        light.connected = True

        yield light
Exemplo n.º 3
0
async def test_init(hass, mock_entry):
    """Test platform setup."""
    await setup.async_setup_component(hass, "persistent_notification", {})

    mock_entry.add_to_hass(hass)

    mock_light_1 = MagicMock(spec=pyzerproc.Light)
    mock_light_1.address = "AA:BB:CC:DD:EE:FF"
    mock_light_1.name = "LEDBlue-CCDDEEFF"
    mock_light_1.connected = True

    mock_light_2 = MagicMock(spec=pyzerproc.Light)
    mock_light_2.address = "11:22:33:44:55:66"
    mock_light_2.name = "LEDBlue-33445566"
    mock_light_2.connected = True

    mock_state_1 = pyzerproc.LightState(False, (0, 0, 0))
    mock_state_2 = pyzerproc.LightState(True, (0, 80, 255))

    mock_light_1.get_state.return_value = mock_state_1
    mock_light_2.get_state.return_value = mock_state_2

    with patch(
        "homeassistant.components.zerproc.light.pyzerproc.discover",
        return_value=[mock_light_1, mock_light_2],
    ):
        await hass.config_entries.async_setup(mock_entry.entry_id)
        await hass.async_block_till_done()

    state = hass.states.get("light.ledblue_ccddeeff")
    assert state.state == STATE_OFF
    assert state.attributes == {
        ATTR_FRIENDLY_NAME: "LEDBlue-CCDDEEFF",
        ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS | SUPPORT_COLOR,
        ATTR_ICON: "mdi:string-lights",
    }

    state = hass.states.get("light.ledblue_33445566")
    assert state.state == STATE_ON
    assert state.attributes == {
        ATTR_FRIENDLY_NAME: "LEDBlue-33445566",
        ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS | SUPPORT_COLOR,
        ATTR_ICON: "mdi:string-lights",
        ATTR_BRIGHTNESS: 255,
        ATTR_HS_COLOR: (221.176, 100.0),
        ATTR_RGB_COLOR: (0, 80, 255),
        ATTR_XY_COLOR: (0.138, 0.08),
    }

    with patch.object(hass.loop, "stop"):
        await hass.async_stop()

    assert mock_light_1.disconnect.called
    assert mock_light_2.disconnect.called
Exemplo n.º 4
0
async def test_discovery_connection_error(hass, mock_entry):
    """Test that invalid devices are skipped."""
    await setup.async_setup_component(hass, "persistent_notification", {})

    light = MagicMock(spec=pykulersky.Light)
    light.address = "AA:BB:CC:11:22:33"
    light.name = "Bedroom"
    light.connected = False
    with patch(
            "homeassistant.components.kulersky.light.pykulersky.discover_bluetooth_devices",
            return_value=[{
                "address": "AA:BB:CC:11:22:33",
                "name": "Bedroom",
            }],
    ):
        with patch("homeassistant.components.kulersky.light.pykulersky.Light"
                   ) as mockdevice, patch.object(
                       light,
                       "connect",
                       side_effect=pykulersky.PykulerskyException):
            mockdevice.return_value = light
            mock_entry.add_to_hass(hass)
            await hass.config_entries.async_setup(mock_entry.entry_id)
            await hass.async_block_till_done()

    # Assert entity was not added
    state = hass.states.get("light.bedroom")
    assert state is None
Exemplo n.º 5
0
async def test_connect_exception(hass, mock_entry):
    """Test platform setup."""
    await setup.async_setup_component(hass, "persistent_notification", {})

    mock_entry.add_to_hass(hass)

    mock_light = MagicMock(spec=pyzerproc.Light)
    mock_light.address = "AA:BB:CC:DD:EE:FF"
    mock_light.name = "LEDBlue-CCDDEEFF"
    mock_light.connected = False

    with patch(
        "homeassistant.components.zerproc.light.pyzerproc.discover",
        return_value=[mock_light],
    ), patch.object(
        mock_light, "connect", side_effect=pyzerproc.ZerprocException("TEST")
    ):
        await hass.config_entries.async_setup(mock_entry.entry_id)
        await hass.async_block_till_done()

    # The exception should be captured and no entities should be added
    assert len(hass.data[DOMAIN]["addresses"]) == 0