Skip to content

Commit cf7aa81

Browse files
authored
Merge pull request #722 from plugwise/improve-tests
Climate-test: implement freezer.tick constructs
2 parents e3d3e4e + 86634c9 commit cf7aa81

File tree

3 files changed

+42
-24
lines changed

3 files changed

+42
-24
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
## Versions from 0.40 and up
44

5+
## v0.53.2
6+
7+
- Climate-test: implement freezer.tick constructs.
8+
- Implement Core PR [#126212](https://github.com/home-assistant/core/pull/126212)
9+
510
## v0.53.1
611

712
- Show model_id for P1 gateway as well.

custom_components/plugwise/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
"iot_class": "local_polling",
99
"loggers": ["plugwise"],
1010
"requirements": ["plugwise==1.4.0"],
11-
"version": "0.53.1",
11+
"version": "0.53.2",
1212
"zeroconf": ["_plugwise._tcp.local."]
1313
}

tests/components/plugwise/test_climate.py

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
from plugwise.exceptions import PlugwiseError
88
import pytest
99

10+
from freezegun.api import FrozenDateTimeFactory
1011
from homeassistant.components.climate.const import HVACMode
1112
from homeassistant.core import HomeAssistant
1213
from homeassistant.exceptions import HomeAssistantError, ServiceValidationError
13-
from homeassistant.util.dt import utcnow
1414

1515
from tests.common import MockConfigEntry, async_fire_time_changed
1616

@@ -97,7 +97,10 @@ async def test_adam_2_climate_entity_attributes(
9797

9898

9999
async def test_adam_3_climate_entity_attributes(
100-
hass: HomeAssistant, mock_smile_adam_3: MagicMock, init_integration: MockConfigEntry
100+
hass: HomeAssistant,
101+
mock_smile_adam_3: MagicMock,
102+
init_integration: MockConfigEntry,
103+
freezer: FrozenDateTimeFactory,
101104
) -> None:
102105
"""Test creation of adam climate device environment."""
103106
state = hass.states.get("climate.anna")
@@ -109,6 +112,7 @@ async def test_adam_3_climate_entity_attributes(
109112
HVACMode.AUTO,
110113
HVACMode.COOL,
111114
]
115+
112116
data = mock_smile_adam_3.async_update.return_value
113117
data.devices["da224107914542988a88561b4452b0f6"][
114118
"select_regulation_mode"
@@ -121,17 +125,20 @@ async def test_adam_3_climate_entity_attributes(
121125
"heating_state"
122126
] = True
123127
with patch(HA_PLUGWISE_SMILE_ASYNC_UPDATE, return_value=data):
124-
async_fire_time_changed(hass, utcnow() + timedelta(minutes=1))
128+
freezer.tick(timedelta(minutes=1))
129+
async_fire_time_changed(hass)
125130
await hass.async_block_till_done()
126-
state = hass.states.get("climate.anna")
127-
assert state
128-
assert state.state == HVACMode.HEAT
129-
assert state.attributes["hvac_action"] == "heating"
130-
assert state.attributes["hvac_modes"] == [
131-
HVACMode.OFF,
132-
HVACMode.AUTO,
133-
HVACMode.HEAT,
134-
]
131+
132+
state = hass.states.get("climate.anna")
133+
assert state
134+
assert state.state == HVACMode.HEAT
135+
assert state.attributes["hvac_action"] == "heating"
136+
assert state.attributes["hvac_modes"] == [
137+
HVACMode.OFF,
138+
HVACMode.AUTO,
139+
HVACMode.HEAT,
140+
]
141+
135142
data = mock_smile_adam_3.async_update.return_value
136143
data.devices["da224107914542988a88561b4452b0f6"][
137144
"select_regulation_mode"
@@ -144,17 +151,19 @@ async def test_adam_3_climate_entity_attributes(
144151
"heating_state"
145152
] = False
146153
with patch(HA_PLUGWISE_SMILE_ASYNC_UPDATE, return_value=data):
147-
async_fire_time_changed(hass, utcnow() + timedelta(minutes=1))
154+
freezer.tick(timedelta(minutes=1))
155+
async_fire_time_changed(hass)
148156
await hass.async_block_till_done()
149-
state = hass.states.get("climate.anna")
150-
assert state
151-
assert state.state == HVACMode.COOL
152-
assert state.attributes["hvac_action"] == "cooling"
153-
assert state.attributes["hvac_modes"] == [
154-
HVACMode.OFF,
155-
HVACMode.AUTO,
156-
HVACMode.COOL,
157-
]
157+
158+
state = hass.states.get("climate.anna")
159+
assert state
160+
assert state.state == HVACMode.COOL
161+
assert state.attributes["hvac_action"] == "cooling"
162+
assert state.attributes["hvac_modes"] == [
163+
HVACMode.OFF,
164+
HVACMode.AUTO,
165+
HVACMode.COOL,
166+
]
158167

159168

160169
async def test_adam_climate_adjust_negative_testing(
@@ -365,6 +374,7 @@ async def test_anna_climate_entity_climate_changes(
365374
hass: HomeAssistant,
366375
mock_smile_anna: MagicMock,
367376
init_integration: MockConfigEntry,
377+
freezer: FrozenDateTimeFactory,
368378
) -> None:
369379
"""Test handling of user requests in anna climate device environment."""
370380
await hass.services.async_call(
@@ -409,11 +419,14 @@ async def test_anna_climate_entity_climate_changes(
409419
mock_smile_anna.set_schedule_state.assert_called_with(
410420
"c784ee9fdab44e1395b8dee7d7a497d5", "off"
411421
)
422+
412423
data = mock_smile_anna.async_update.return_value
413424
data.devices["3cb70739631c4d17a86b8b12e8a5161b"].pop("available_schedules")
414425
with patch(HA_PLUGWISE_SMILE_ASYNC_UPDATE, return_value=data):
415-
async_fire_time_changed(hass, utcnow() + timedelta(minutes=1))
426+
freezer.tick(timedelta(minutes=1))
427+
async_fire_time_changed(hass)
416428
await hass.async_block_till_done()
429+
417430
state = hass.states.get("climate.anna")
418431
assert state.state == HVACMode.HEAT
419432
assert state.attributes["hvac_modes"] == [HVACMode.HEAT_COOL]

0 commit comments

Comments
 (0)