core/tests/components/gree/test_bridge.py

68 lines
2.3 KiB
Python

"""Tests for gree component."""
from datetime import timedelta
from unittest.mock import patch
import pytest
from homeassistant.components.climate.const import DOMAIN
from homeassistant.components.gree.const import COORDINATORS, DOMAIN as GREE
import homeassistant.util.dt as dt_util
from .common import async_setup_gree, build_device_mock
from tests.common import async_fire_time_changed
ENTITY_ID_1 = f"{DOMAIN}.fake_device_1"
ENTITY_ID_2 = f"{DOMAIN}.fake_device_2"
@pytest.fixture
def mock_now():
"""Fixture for dtutil.now."""
return dt_util.utcnow()
async def test_discovery_after_setup(hass, discovery, device, mock_now):
"""Test gree devices don't change after multiple discoveries."""
mock_device_1 = build_device_mock(
name="fake-device-1", ipAddress="1.1.1.1", mac="aabbcc112233"
)
mock_device_2 = build_device_mock(
name="fake-device-2", ipAddress="2.2.2.2", mac="bbccdd223344"
)
discovery.return_value.mock_devices = [mock_device_1, mock_device_2]
device.side_effect = [mock_device_1, mock_device_2]
await async_setup_gree(hass)
await hass.async_block_till_done()
assert discovery.return_value.scan_count == 1
assert len(hass.states.async_all(DOMAIN)) == 2
device_infos = [x.device.device_info for x in hass.data[GREE][COORDINATORS]]
assert device_infos[0].ip == "1.1.1.1"
assert device_infos[1].ip == "2.2.2.2"
# rediscover the same devices with new ip addresses should update
mock_device_1 = build_device_mock(
name="fake-device-1", ipAddress="1.1.1.2", mac="aabbcc112233"
)
mock_device_2 = build_device_mock(
name="fake-device-2", ipAddress="2.2.2.1", mac="bbccdd223344"
)
discovery.return_value.mock_devices = [mock_device_1, mock_device_2]
device.side_effect = [mock_device_1, mock_device_2]
next_update = mock_now + timedelta(minutes=6)
with patch("homeassistant.util.dt.utcnow", return_value=next_update):
async_fire_time_changed(hass, next_update)
await hass.async_block_till_done()
assert discovery.return_value.scan_count == 2
assert len(hass.states.async_all(DOMAIN)) == 2
device_infos = [x.device.device_info for x in hass.data[GREE][COORDINATORS]]
assert device_infos[0].ip == "1.1.1.2"
assert device_infos[1].ip == "2.2.2.1"