"""Test fixtures for the Wallbox integration.""" from http import HTTPStatus from unittest.mock import MagicMock, Mock, patch import pytest import requests from homeassistant.components.wallbox.const import ( CHARGER_DATA_POST_L1_KEY, CHARGER_DATA_POST_L2_KEY, CHARGER_ENERGY_PRICE_KEY, CHARGER_LOCKED_UNLOCKED_KEY, CHARGER_MAX_CHARGING_CURRENT_POST_KEY, CHARGER_MAX_ICP_CURRENT_KEY, CONF_STATION, DOMAIN, ) from homeassistant.const import CONF_PASSWORD, CONF_USERNAME from homeassistant.core import HomeAssistant from .const import WALLBOX_AUTHORISATION_RESPONSE, WALLBOX_STATUS_RESPONSE from tests.common import MockConfigEntry http_403_error = requests.exceptions.HTTPError() http_403_error.response = requests.Response() http_403_error.response.status_code = HTTPStatus.FORBIDDEN http_404_error = requests.exceptions.HTTPError() http_404_error.response = requests.Response() http_404_error.response.status_code = HTTPStatus.NOT_FOUND http_429_error = requests.exceptions.HTTPError() http_429_error.response = requests.Response() http_429_error.response.status_code = HTTPStatus.TOO_MANY_REQUESTS @pytest.fixture def entry(hass: HomeAssistant) -> MockConfigEntry: """Return mock config entry.""" entry = MockConfigEntry( domain=DOMAIN, data={ CONF_USERNAME: "test_username", CONF_PASSWORD: "test_password", CONF_STATION: "12345", }, entry_id="testEntry", ) entry.add_to_hass(hass) return entry @pytest.fixture def mock_wallbox(): """Patch Wallbox class for tests.""" with patch("homeassistant.components.wallbox.Wallbox") as mock: wallbox = MagicMock() wallbox.authenticate = Mock(return_value=WALLBOX_AUTHORISATION_RESPONSE) wallbox.lockCharger = Mock( return_value={ CHARGER_DATA_POST_L1_KEY: { CHARGER_DATA_POST_L2_KEY: {CHARGER_LOCKED_UNLOCKED_KEY: True} } } ) wallbox.unlockCharger = Mock( return_value={ CHARGER_DATA_POST_L1_KEY: { CHARGER_DATA_POST_L2_KEY: {CHARGER_LOCKED_UNLOCKED_KEY: True} } } ) wallbox.setEnergyCost = Mock(return_value={CHARGER_ENERGY_PRICE_KEY: 0.25}) wallbox.setMaxChargingCurrent = Mock( return_value={ CHARGER_DATA_POST_L1_KEY: { CHARGER_DATA_POST_L2_KEY: { CHARGER_MAX_CHARGING_CURRENT_POST_KEY: True } } } ) wallbox.setIcpMaxCurrent = Mock(return_value={CHARGER_MAX_ICP_CURRENT_KEY: 25}) wallbox.getChargerStatus = Mock(return_value=WALLBOX_STATUS_RESPONSE) mock.return_value = wallbox yield wallbox async def setup_integration(hass: HomeAssistant, entry: MockConfigEntry) -> None: """Test wallbox sensor class setup.""" await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done()