diff --git a/homeassistant/components/ccm15/config_flow.py b/homeassistant/components/ccm15/config_flow.py index 81e0df40738..c02b43234e7 100644 --- a/homeassistant/components/ccm15/config_flow.py +++ b/homeassistant/components/ccm15/config_flow.py @@ -11,6 +11,7 @@ from homeassistant.const import CONF_HOST, CONF_PORT, CONF_SCAN_INTERVAL from homeassistant.core import HomeAssistant from homeassistant.data_entry_flow import FlowResult from homeassistant.exceptions import HomeAssistantError +import homeassistant.helpers.config_validation as cv from .climate import CCM15Coordinator from .const import DEFAULT_INTERVAL, DOMAIN @@ -20,7 +21,7 @@ _LOGGER = logging.getLogger(__name__) STEP_USER_DATA_SCHEMA = vol.Schema( { vol.Required(CONF_HOST): str, - vol.Optional(CONF_PORT, default=80): int, + vol.Optional(CONF_PORT, default=80): cv.port, vol.Optional(CONF_SCAN_INTERVAL, default=DEFAULT_INTERVAL): int, } ) diff --git a/tests/components/ccm15/test_coordinator.py b/tests/components/ccm15/test_coordinator.py index fd3d2109f90..6873e060ace 100644 --- a/tests/components/ccm15/test_coordinator.py +++ b/tests/components/ccm15/test_coordinator.py @@ -2,6 +2,7 @@ import unittest from unittest.mock import AsyncMock, patch +from ccm15 import CCM15DeviceState, CCM15SlaveDevice import pytest from homeassistant.components.ccm15 import CCM15Coordinator @@ -17,9 +18,7 @@ from homeassistant.components.climate import ( ClimateEntityFeature, HVACMode, ) -from homeassistant.const import ( - UnitOfTemperature, -) +from homeassistant.const import UnitOfTemperature from homeassistant.core import HomeAssistant pytestmark = pytest.mark.usefixtures("mock_setup_entry") @@ -27,21 +26,32 @@ pytestmark = pytest.mark.usefixtures("mock_setup_entry") async def test_coordinator(hass: HomeAssistant, mock_setup_entry: AsyncMock) -> None: """Test the coordinator.""" + + # Create a dictionary of CCM15SlaveDevice objects + ccm15_devices = { + 0: CCM15SlaveDevice(bytes.fromhex("000000b0b8001b")), + 1: CCM15SlaveDevice(bytes.fromhex("00000041c0001a")), + } + # Create an instance of the CCM15DeviceState class + device_state = CCM15DeviceState(devices=ccm15_devices) with patch( - "homeassistant.components.ccm15.coordinator.CCM15Coordinator._fetch_xml_data", - return_value="000000b0b8001b,00000041c0001a,-", + "ccm15.CCM15Device.CCM15Device.get_status_async", + return_value=device_state, ): coordinator = CCM15Coordinator("1.1.1.1", "80", 30, hass) await coordinator.async_refresh() - data = coordinator.data - devices = coordinator.get_devices() + + data = coordinator.data + devices = coordinator.get_devices() assert len(data.devices) == 2 - first_climate = data.devices[0] + assert len(devices) == 2 + + first_climate = list(devices)[0] assert first_climate is not None - assert first_climate.temperature == 27 - assert first_climate.temperature_setpoint == 23 - assert first_climate.unit == UnitOfTemperature.CELSIUS + assert first_climate.temperature_unit == UnitOfTemperature.CELSIUS + assert first_climate.current_temperature == 27 + assert first_climate.target_temperature == 23 assert len(devices) == 2 climate = next(iter(devices)) @@ -79,32 +89,32 @@ async def test_coordinator(hass: HomeAssistant, mock_setup_entry: AsyncMock) -> assert climate.target_temperature_step == 1 with patch( - "homeassistant.components.ccm15.coordinator.CCM15Coordinator.async_send_state", + "ccm15.CCM15Device.CCM15Device.async_send_state", return_value=200, ): await climate.async_set_fan_mode(FAN_HIGH) with patch( - "homeassistant.components.ccm15.coordinator.CCM15Coordinator.async_send_state", + "ccm15.CCM15Device.CCM15Device.async_send_state", return_value=200, ): await climate.async_set_hvac_mode(HVACMode.COOL) with patch( - "homeassistant.components.ccm15.coordinator.CCM15Coordinator.async_send_state", + "ccm15.CCM15Device.CCM15Device.async_send_state", return_value=200, ): await climate.async_set_temperature(ATTR_TEMPERATURE=25) await climate.async_set_temperature(**{ATTR_TEMPERATURE: 25}) with patch( - "homeassistant.components.ccm15.coordinator.CCM15Coordinator.async_send_state", + "ccm15.CCM15Device.CCM15Device.async_send_state", return_value=200, ): await climate.async_turn_off() with patch( - "homeassistant.components.ccm15.coordinator.CCM15Coordinator.async_send_state", + "ccm15.CCM15Device.CCM15Device.async_send_state", return_value=200, ): await climate.async_turn_on() diff --git a/tests/components/ccm15/test_data_model.py b/tests/components/ccm15/test_data_model.py deleted file mode 100644 index 373d75f6ee1..00000000000 --- a/tests/components/ccm15/test_data_model.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Unit test for CCM15 climate component.""" -import unittest - -import homeassistant.components.ccm15 as ccm15 -from homeassistant.const import ( - UnitOfTemperature, -) - - -class TestCCM15SlaveDevice(unittest.TestCase): - """Test the CCM15SlaveDevice class.""" - - def test_swing_mode_on(self) -> None: - """Test that the swing mode is on.""" - data = bytes.fromhex("00000041d2001a") - device = ccm15.data_model.CCM15SlaveDevice(data) - self.assertTrue(device.is_swing_on) - - def test_swing_mode_off(self) -> None: - """Test that the swing mode is off.""" - data = bytes.fromhex("00000041d0001a") - device = ccm15.data_model.CCM15SlaveDevice(data) - self.assertFalse(device.is_swing_on) - - def test_temp_fan_mode(self) -> None: - """Test that the swing mode is on.""" - data = bytes.fromhex("00000041d2001a") - device = ccm15.data_model.CCM15SlaveDevice(data) - self.assertEqual(26, device.temperature) - self.assertEqual(2, device.fan_mode) - self.assertEqual(0, device.ac_mode) - - def test_fahrenheit(self) -> None: - """Test that farenheith bit.""" - - data = bytearray.fromhex("81000041d2001a") - device = ccm15.data_model.CCM15SlaveDevice(data) - self.assertEqual(UnitOfTemperature.FAHRENHEIT, device.unit) - self.assertEqual(88, device.temperature_setpoint) - self.assertEqual(0, device.locked_cool_temperature) - self.assertEqual(0, device.locked_heat_temperature) - - -if __name__ == "__main__": - unittest.main()