1
0
mirror of https://github.com/home-assistant/core.git synced 2026-04-17 15:44:52 +01:00
Files
core/tests/components/lutron/conftest.py

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",
)