"""Configure pytest for Dyson tests."""
from unittest.mock import patch

from libpurecool.dyson_device import DysonDevice
import pytest

from homeassistant.components.dyson import DOMAIN
from homeassistant.core import HomeAssistant

from .common import BASE_PATH, CONFIG

from tests.common import async_setup_component


@pytest.fixture()
async def device(hass: HomeAssistant, request) -> DysonDevice:
    """Fixture to provide Dyson 360 Eye device."""
    platform = request.module.PLATFORM_DOMAIN
    get_device = request.module.async_get_device
    if hasattr(request, "param"):
        if isinstance(request.param, list):
            device = get_device(*request.param)
        else:
            device = get_device(request.param)
    else:
        device = get_device()
    with patch(f"{BASE_PATH}.DysonAccount.login", return_value=True), patch(
        f"{BASE_PATH}.DysonAccount.devices", return_value=[device]
    ), patch(f"{BASE_PATH}.PLATFORMS", [platform]):
        # PLATFORMS is patched so that only the platform being tested is set up
        await async_setup_component(
            hass,
            DOMAIN,
            CONFIG,
        )
        await hass.async_block_till_done()

    return device