hass.tibber_prices/tests/test_coordinator_basic.py
Julian Pawlowski 0ffa17679b fix config flow
2025-11-02 15:46:13 +00:00

86 lines
3.1 KiB
Python

"""Test basic coordinator functionality with the enhanced coordinator."""
from unittest.mock import AsyncMock, Mock, patch
import pytest
from custom_components.tibber_prices.coordinator import TibberPricesDataUpdateCoordinator
class TestBasicCoordinator:
"""Test basic coordinator functionality."""
@pytest.fixture
def mock_hass(self):
"""Create a mock Home Assistant instance."""
hass = Mock()
hass.data = {}
return hass
@pytest.fixture
def mock_config_entry(self):
"""Create a mock config entry."""
config_entry = Mock()
config_entry.unique_id = "test_home_123"
config_entry.entry_id = "test_entry"
config_entry.data = {"access_token": "test_token"}
return config_entry
@pytest.fixture
def mock_session(self):
"""Create a mock session."""
return Mock()
@pytest.fixture
def coordinator(self, mock_hass, mock_config_entry, mock_session):
"""Create a coordinator instance."""
with (
patch(
"custom_components.tibber_prices.coordinator.aiohttp_client.async_get_clientsession",
return_value=mock_session,
),
patch("custom_components.tibber_prices.coordinator.Store") as mock_store_class,
):
mock_store = Mock()
mock_store.async_load = AsyncMock(return_value=None)
mock_store.async_save = AsyncMock()
mock_store_class.return_value = mock_store
return TibberPricesDataUpdateCoordinator(mock_hass, mock_config_entry)
def test_coordinator_creation(self, coordinator):
"""Test that coordinator can be created."""
assert coordinator is not None
assert hasattr(coordinator, "get_current_interval_data")
assert hasattr(coordinator, "get_all_intervals")
assert hasattr(coordinator, "get_user_profile")
def test_is_main_entry(self, coordinator):
"""Test main entry detection."""
# First coordinator should be main entry
assert coordinator.is_main_entry() is True
def test_get_user_profile_no_data(self, coordinator):
"""Test getting user profile when no data is cached."""
profile = coordinator.get_user_profile()
assert profile == {"last_updated": None, "cached_user_data": False}
def test_get_user_homes_no_data(self, coordinator):
"""Test getting user homes when no data is cached."""
homes = coordinator.get_user_homes()
assert homes == []
def test_get_current_interval_data_no_data(self, coordinator):
"""Test getting current interval data when no data is available."""
current_data = coordinator.get_current_interval_data()
assert current_data is None
def test_get_all_intervals_no_data(self, coordinator):
"""Test getting all intervals when no data is available."""
intervals = coordinator.get_all_intervals()
assert intervals == []
def test_get_interval_granularity(self, coordinator):
"""Test getting interval granularity."""
granularity = coordinator.get_interval_granularity()
assert granularity is None