"""Tests for the Homevolt entity."""

from unittest.mock import MagicMock

from homevolt import DeviceMetadata

from homeassistant.components.homevolt.const import DOMAIN, MANUFACTURER
from homeassistant.components.homevolt.switch import HomevoltLocalModeSwitch
from homeassistant.core import HomeAssistant

from .conftest import DEVICE_IDENTIFIER


async def test_homevolt_entity_device_info_with_metadata(
    hass: HomeAssistant,
) -> None:
    """Test HomevoltEntity device info when device_metadata is present."""
    coordinator = MagicMock()
    coordinator.data.unique_id = "40580137858664"
    coordinator.data.device_metadata = {
        DEVICE_IDENTIFIER: DeviceMetadata(name="Homevolt EMS", model="EMS-1000"),
    }
    coordinator.client.base_url = "http://127.0.0.1"

    entity = HomevoltLocalModeSwitch(coordinator)
    assert entity.device_info is not None
    assert entity.device_info["identifiers"] == {
        (DOMAIN, f"40580137858664_{DEVICE_IDENTIFIER}")
    }
    assert entity.device_info["configuration_url"] == "http://127.0.0.1"
    assert entity.device_info["manufacturer"] == MANUFACTURER
    assert entity.device_info["model"] == "EMS-1000"
    assert entity.device_info["name"] == "Homevolt EMS"


async def test_homevolt_entity_device_info_without_metadata(
    hass: HomeAssistant,
) -> None:
    """Test HomevoltEntity device info when device_metadata has no entry for device."""
    coordinator = MagicMock()
    coordinator.data.unique_id = "40580137858664"
    coordinator.data.device_metadata = {}
    coordinator.client.base_url = "http://127.0.0.1"

    entity = HomevoltLocalModeSwitch(coordinator)
    assert entity.device_info is not None
    assert entity.device_info["identifiers"] == {
        (DOMAIN, f"40580137858664_{DEVICE_IDENTIFIER}")
    }
    assert entity.device_info["manufacturer"] == MANUFACTURER
    assert entity.device_info["model"] is None
    assert entity.device_info["name"] is None
