"""Blebox button entities tests.""" import logging from unittest.mock import PropertyMock import blebox_uniapi import pytest from homeassistant.const import ATTR_ICON from homeassistant.core import HomeAssistant from .conftest import async_setup_entity, mock_feature query_icon_matching = [ ("up", "mdi:arrow-up-circle"), ("down", "mdi:arrow-down-circle"), ("fav", "mdi:heart-circle"), ("open", "mdi:arrow-up-circle"), ("close", "mdi:arrow-down-circle"), ] @pytest.fixture(name="tvliftbox") def tv_lift_box_fixture(caplog): """Return simple button entity mock.""" caplog.set_level(logging.ERROR) feature = mock_feature( "buttons", blebox_uniapi.button.Button, unique_id="BleBox-tvLiftBox-4a3fdaad90aa-open_or_stop", full_name="tvLiftBox-open_or_stop", control_type=blebox_uniapi.button.ControlType.OPEN, ) product = feature.product type(product).name = PropertyMock(return_value="My tvLiftBox") type(product).model = PropertyMock(return_value="tvLiftBox") type(product)._query_string = PropertyMock(return_value="open_or_stop") return (feature, "button.tvliftbox_open_or_stop") async def test_tvliftbox_init( tvliftbox, hass: HomeAssistant, caplog: pytest.LogCaptureFixture ) -> None: """Test tvLiftBox initialisation.""" caplog.set_level(logging.ERROR) _, entity_id = tvliftbox entry = await async_setup_entity(hass, entity_id) state = hass.states.get(entity_id) assert entry.unique_id == "BleBox-tvLiftBox-4a3fdaad90aa-open_or_stop" assert state.name == "tvLiftBox-open_or_stop" @pytest.mark.parametrize("input", query_icon_matching) async def test_get_icon( input, tvliftbox, hass: HomeAssistant, caplog: pytest.LogCaptureFixture ) -> None: """Test if proper icon is returned.""" caplog.set_level(logging.ERROR) feature_mock, entity_id = tvliftbox feature_mock.query_string = input[0] _ = await async_setup_entity(hass, entity_id) state = hass.states.get(entity_id) assert state.attributes[ATTR_ICON] == input[1]