mirror of
https://github.com/home-assistant/core.git
synced 2026-04-17 15:44:52 +01:00
133 lines
3.7 KiB
Python
133 lines
3.7 KiB
Python
"""Provide common Lutron fixtures and mocks."""
|
|
|
|
from collections.abc import Generator
|
|
from unittest.mock import AsyncMock, MagicMock, patch
|
|
|
|
from pylutron import OccupancyGroup
|
|
import pytest
|
|
|
|
from homeassistant.components.lutron.const import DOMAIN
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_setup_entry() -> Generator[AsyncMock]:
|
|
"""Override async_setup_entry."""
|
|
with patch(
|
|
"homeassistant.components.lutron.async_setup_entry", return_value=True
|
|
) as mock_setup_entry:
|
|
yield mock_setup_entry
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_lutron() -> Generator[MagicMock]:
|
|
"""Mock Lutron client."""
|
|
with (
|
|
patch("homeassistant.components.lutron.Lutron", autospec=True) as mock_lutron,
|
|
patch("homeassistant.components.lutron.config_flow.Lutron", new=mock_lutron),
|
|
):
|
|
client = mock_lutron.return_value
|
|
client.guid = "12345678901"
|
|
client.areas = []
|
|
|
|
# Mock an area
|
|
area = MagicMock()
|
|
area.name = "Test Area"
|
|
area.outputs = []
|
|
area.keypads = []
|
|
area.occupancy_group = None
|
|
client.areas.append(area)
|
|
|
|
# Mock a light
|
|
light = MagicMock()
|
|
light.name = "Test Light"
|
|
light.id = 1
|
|
light.uuid = "light_uuid"
|
|
light.legacy_uuid = "light_legacy_uuid"
|
|
light.is_dimmable = True
|
|
light.type = "LIGHT"
|
|
light.last_level.return_value = 0
|
|
area.outputs.append(light)
|
|
|
|
# Mock a switch
|
|
switch = MagicMock()
|
|
switch.name = "Test Switch"
|
|
switch.id = 2
|
|
switch.uuid = "switch_uuid"
|
|
switch.legacy_uuid = "switch_legacy_uuid"
|
|
switch.is_dimmable = False
|
|
switch.type = "NON_DIM"
|
|
switch.last_level.return_value = 0
|
|
area.outputs.append(switch)
|
|
|
|
# Mock a cover
|
|
cover = MagicMock()
|
|
cover.name = "Test Cover"
|
|
cover.id = 3
|
|
cover.uuid = "cover_uuid"
|
|
cover.legacy_uuid = "cover_legacy_uuid"
|
|
cover.type = "SYSTEM_SHADE"
|
|
cover.last_level.return_value = 0
|
|
area.outputs.append(cover)
|
|
|
|
# Mock a fan
|
|
fan = MagicMock()
|
|
fan.name = "Test Fan"
|
|
fan.id = 4
|
|
fan.uuid = "fan_uuid"
|
|
fan.legacy_uuid = "fan_legacy_uuid"
|
|
fan.type = "CEILING_FAN_TYPE"
|
|
fan.last_level.return_value = 0
|
|
area.outputs.append(fan)
|
|
|
|
# Mock a keypad with a button and LED
|
|
keypad = MagicMock()
|
|
keypad.name = "Test Keypad"
|
|
keypad.id = 1
|
|
keypad.type = "KEYPAD"
|
|
keypad.uuid = "keypad_uuid"
|
|
keypad.legacy_uuid = "1-0"
|
|
area.keypads.append(keypad)
|
|
|
|
button = MagicMock()
|
|
button.name = "Test Button"
|
|
button.number = 1
|
|
button.button_type = "SingleAction"
|
|
button.uuid = "button_uuid"
|
|
button.legacy_uuid = "button_legacy_uuid"
|
|
keypad.buttons = [button]
|
|
|
|
led = MagicMock()
|
|
led.name = "Test LED"
|
|
led.number = 1
|
|
led.uuid = "led_uuid"
|
|
led.legacy_uuid = "led_legacy_uuid"
|
|
led.last_state = 0
|
|
keypad.leds = [led]
|
|
|
|
# Mock an occupancy group
|
|
occ_group = MagicMock()
|
|
occ_group.name = "Test Occupancy"
|
|
occ_group.id = 5
|
|
occ_group.uuid = "occ_uuid"
|
|
occ_group.legacy_uuid = "occ_legacy_uuid"
|
|
occ_group.state = OccupancyGroup.State.VACANT
|
|
area.occupancy_group = occ_group
|
|
|
|
yield client
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_config_entry() -> MockConfigEntry:
|
|
"""Mock a Lutron config entry."""
|
|
return MockConfigEntry(
|
|
domain=DOMAIN,
|
|
data={
|
|
"host": "127.0.0.1",
|
|
"username": "lutron",
|
|
"password": "password",
|
|
},
|
|
unique_id="12345678901",
|
|
)
|