Files
core/tests/components/adax/conftest.py
Pär Holmdahl 85b608912b Add energy sensor to adax (#145995)
* 2nd attempt to add energysensors to Adax component

* Ruff format changes

* I did not reuse the first call for information.. Now i do..

* Fixed some tests after the last change

* Remove extra attributes

* Dont use info logger

* aggregate if not rooms

* Raise error if no rooms are discovered

* Move code out of try catch

* Catch more specific errors

* removed platforms from manifest.json

* remove attribute translation key

* Getting rid of the summation of energy used..

* Fixed errorness in test

* set roomproperty in Init

* concatenated the two functions

* use raw Wh values and suggest a konversion for HomeAssistant

* Use snapshot testing

* Update homeassistant/components/adax/coordinator.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Update homeassistant/components/adax/strings.json

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Update homeassistant/components/adax/sensor.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Update homeassistant/components/adax/sensor.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Update homeassistant/components/adax/sensor.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Update homeassistant/components/adax/sensor.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Removing un needed logg

* Removing initial value

* Changing tests to snapshot_platform

* Removing available property from sensor.py and doing a ruff formating..

* Fix a broken indent

* Add fix for coordinator updates in Adax energisensor and namesetting

* Update homeassistant/components/adax/sensor.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Update homeassistant/components/adax/coordinator.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Update homeassistant/components/adax/coordinator.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Update homeassistant/components/adax/sensor.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

* generated snapshots

* Ruff changes

* Even more ruff changes, that did not appear on ruff command locally

* Trying to fix CI updates

* Update homeassistant/components/adax/sensor.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Improve AdaxEnergySensor by simplifying code and ensuring correct handling of energy values. Adjust how room and device information is retrieved to avoid duplication and improve readability.

* Removed a test för device_id as per request..

* Make supersure that value is int and not "Any"

* removing executable status

* Update tests/components/adax/test_sensor.py

Co-authored-by: Josef Zweck <josef@zweck.dev>

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-06-03 10:36:43 +02:00

99 lines
2.4 KiB
Python

"""Fixtures for Adax testing."""
from typing import Any
from unittest.mock import patch
import pytest
from homeassistant.components.adax.const import (
ACCOUNT_ID,
CLOUD,
CONNECTION_TYPE,
DOMAIN,
LOCAL,
)
from homeassistant.const import (
CONF_IP_ADDRESS,
CONF_PASSWORD,
CONF_TOKEN,
CONF_UNIQUE_ID,
)
from tests.common import AsyncMock, MockConfigEntry
CLOUD_CONFIG = {
ACCOUNT_ID: 12345,
CONF_PASSWORD: "pswd",
CONNECTION_TYPE: CLOUD,
}
LOCAL_CONFIG = {
CONF_IP_ADDRESS: "192.168.1.12",
CONF_TOKEN: "TOKEN-123",
CONF_UNIQUE_ID: "11:22:33:44:55:66",
CONNECTION_TYPE: LOCAL,
}
CLOUD_DEVICE_DATA: dict[str, Any] = [
{
"id": "1",
"homeId": "1",
"name": "Room 1",
"temperature": 15,
"targetTemperature": 20,
"heatingEnabled": True,
"energyWh": 1500,
}
]
LOCAL_DEVICE_DATA: dict[str, Any] = {
"current_temperature": 15,
"target_temperature": 20,
}
@pytest.fixture
def mock_cloud_config_entry(request: pytest.FixtureRequest) -> MockConfigEntry:
"""Mock a "CLOUD" config entry."""
return MockConfigEntry(domain=DOMAIN, data=CLOUD_CONFIG)
@pytest.fixture
def mock_local_config_entry(request: pytest.FixtureRequest) -> MockConfigEntry:
"""Mock a "LOCAL" config entry."""
return MockConfigEntry(domain=DOMAIN, data=LOCAL_CONFIG)
@pytest.fixture
def mock_adax_cloud():
"""Mock climate data."""
with patch("homeassistant.components.adax.coordinator.Adax") as mock_adax:
mock_adax_class = mock_adax.return_value
mock_adax_class.fetch_rooms_info = AsyncMock()
mock_adax_class.fetch_rooms_info.return_value = CLOUD_DEVICE_DATA
mock_adax_class.get_rooms = AsyncMock()
mock_adax_class.get_rooms.return_value = CLOUD_DEVICE_DATA
mock_adax_class.fetch_energy_info = AsyncMock()
mock_adax_class.fetch_energy_info.return_value = [
{"deviceId": "1", "energyWh": 1500}
]
mock_adax_class.update = AsyncMock()
mock_adax_class.update.return_value = None
yield mock_adax_class
@pytest.fixture
def mock_adax_local():
"""Mock climate data."""
with patch("homeassistant.components.adax.coordinator.AdaxLocal") as mock_adax:
mock_adax_class = mock_adax.return_value
mock_adax_class.get_status = AsyncMock()
mock_adax_class.get_status.return_value = LOCAL_DEVICE_DATA
yield mock_adax_class