73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
"""Tests for the PV Microinverter sensor platform."""
|
|
|
|
from datetime import datetime
|
|
from unittest.mock import MagicMock
|
|
|
|
import pytest
|
|
from homeassistant.components.sensor import SensorDeviceClass, SensorStateClass
|
|
from homeassistant.const import UnitOfEnergy, UnitOfPower
|
|
|
|
from pv_microinverter.const import PVMicroinverterData
|
|
from pv_microinverter.coordinator import (
|
|
PVMicroinverterDataUpdateCoordinator,
|
|
)
|
|
from pv_microinverter.sensor import PVMicroinverterSensor
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_sensor_initialization():
|
|
"""Test sensor initialization."""
|
|
# Mock data and coordinator
|
|
mock_data = PVMicroinverterData(
|
|
current_power=500.0,
|
|
today_energy=2.5,
|
|
lifetime_energy=150.0,
|
|
last_updated=datetime.now().isoformat(),
|
|
)
|
|
|
|
mock_coordinator = MagicMock(spec=PVMicroinverterDataUpdateCoordinator)
|
|
mock_coordinator.data = mock_data
|
|
mock_coordinator.last_update_success = True
|
|
|
|
# Test current power sensor
|
|
current_power_sensor = PVMicroinverterSensor(
|
|
coordinator=mock_coordinator,
|
|
system_id="test_system",
|
|
sensor_type="current_power",
|
|
sensor_info={
|
|
"name": "Current Power",
|
|
"icon": "mdi:solar-power",
|
|
"unit": "W",
|
|
"device_class": "power",
|
|
"state_class": "measurement",
|
|
},
|
|
)
|
|
|
|
# Verify sensor properties
|
|
assert current_power_sensor.name == "Current Power"
|
|
assert current_power_sensor.native_unit_of_measurement == UnitOfPower.WATT
|
|
assert current_power_sensor.device_class == SensorDeviceClass.POWER
|
|
assert current_power_sensor.state_class == SensorStateClass.MEASUREMENT
|
|
assert current_power_sensor.native_value == 500.0
|
|
|
|
# Test today's energy sensor
|
|
today_energy_sensor = PVMicroinverterSensor(
|
|
coordinator=mock_coordinator,
|
|
system_id="test_system",
|
|
sensor_type="today_energy",
|
|
sensor_info={
|
|
"name": "Today's Energy",
|
|
"icon": "mdi:solar-power",
|
|
"unit": "kWh",
|
|
"device_class": "energy",
|
|
"state_class": "total_increasing",
|
|
},
|
|
)
|
|
|
|
# Verify sensor properties
|
|
assert today_energy_sensor.name == "Today's Energy"
|
|
assert today_energy_sensor.native_unit_of_measurement == UnitOfEnergy.KILO_WATT_HOUR
|
|
assert today_energy_sensor.device_class == SensorDeviceClass.ENERGY
|
|
assert today_energy_sensor.state_class == SensorStateClass.TOTAL_INCREASING
|
|
assert today_energy_sensor.native_value == 2.5
|