Skip to content

Commit acbc9a5

Browse files
committed
Return other Adam testcases
1 parent 91d377e commit acbc9a5

File tree

1 file changed

+249
-0
lines changed

1 file changed

+249
-0
lines changed

tests/test_adam.py

Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,252 @@ async def test_connect_adam_plus_anna_new(self):
166166

167167
await smile.close_connection()
168168
await self.disconnect(server, client)
169+
170+
@pytest.mark.asyncio
171+
async def test_connect_adam_zone_per_device(self):
172+
"""Test an extensive setup of Adam with a zone per device."""
173+
self.smile_setup = "adam_zone_per_device"
174+
175+
testdata = self.load_testdata(SMILE_TYPE, self.smile_setup)
176+
server, smile, client = await self.connect_wrapper()
177+
assert smile.smile_hostname == "smile000000"
178+
179+
self.validate_test_basics(
180+
_LOGGER,
181+
smile,
182+
smile_version="3.0.15",
183+
)
184+
185+
await self.device_test(smile, "2022-05-16 00:00:01", testdata)
186+
assert smile.gateway_id == "fe799307f1624099878210aa0b9f1475"
187+
assert smile._last_active["12493538af164a409c6a1c79e38afe1c"] == BADKAMER_SCHEMA
188+
assert smile._last_active["c50f167537524366a5af7aa3942feb1e"] == GF7_WOONKAMER
189+
assert smile._last_active["82fa13f017d240daa0d0ea1775420f24"] == CV_JESSIE
190+
assert smile._last_active["08963fec7c53423ca5680aa4cb502c63"] == BADKAMER_SCHEMA
191+
assert smile._last_active["446ac08dd04d4eff8ac57489757b7314"] == BADKAMER_SCHEMA
192+
assert self.entity_items == 340
193+
194+
assert "af82e4ccf9c548528166d38e560662a4" in self.notifications
195+
await smile.delete_notification()
196+
197+
result = await self.tinker_thermostat(
198+
smile, "c50f167537524366a5af7aa3942feb1e", good_schedules=[GF7_WOONKAMER]
199+
)
200+
assert result
201+
result = await self.tinker_thermostat(
202+
smile, "82fa13f017d240daa0d0ea1775420f24", good_schedules=[CV_JESSIE]
203+
)
204+
assert result
205+
switch_change = await self.tinker_switch(
206+
smile, "675416a629f343c495449970e2ca37b5"
207+
)
208+
assert not switch_change
209+
210+
reboot = await self.tinker_reboot(smile)
211+
assert reboot
212+
213+
await smile.close_connection()
214+
await self.disconnect(server, client)
215+
216+
server, smile, client = await self.connect_wrapper(raise_timeout=True)
217+
await self.device_test(smile, "2022-05-16 00:00:01", testdata, skip_testing=True)
218+
result = await self.tinker_thermostat(
219+
smile,
220+
"c50f167537524366a5af7aa3942feb1e",
221+
good_schedules=[GF7_WOONKAMER],
222+
unhappy=True,
223+
)
224+
assert result
225+
result = await self.tinker_thermostat(
226+
smile,
227+
"82fa13f017d240daa0d0ea1775420f24",
228+
good_schedules=[CV_JESSIE],
229+
unhappy=True,
230+
)
231+
assert result
232+
233+
tinkered = await self.tinker_max_boiler_temp(smile, unhappy=True)
234+
assert not tinkered
235+
236+
try:
237+
await smile.delete_notification()
238+
notification_deletion = False # pragma: no cover
239+
except pw_exceptions.ConnectionFailedError:
240+
notification_deletion = True
241+
assert notification_deletion
242+
243+
reboot = await self.tinker_reboot(smile, unhappy=True)
244+
assert reboot
245+
246+
await smile.close_connection()
247+
await self.disconnect(server, client)
248+
249+
@pytest.mark.asyncio
250+
async def test_connect_adam_multiple_devices_per_zone(self):
251+
"""Test an extensive setup of Adam with multiple devices per zone."""
252+
self.smile_setup = "adam_multiple_devices_per_zone"
253+
254+
testdata = self.load_testdata(SMILE_TYPE, self.smile_setup)
255+
server, smile, client = await self.connect_wrapper()
256+
assert smile.smile_hostname == "smile000000"
257+
258+
self.validate_test_basics(
259+
_LOGGER,
260+
smile,
261+
smile_version="3.0.15",
262+
)
263+
264+
await self.device_test(smile, "2022-05-16 00:00:01", testdata)
265+
assert smile._last_active["12493538af164a409c6a1c79e38afe1c"] == BADKAMER_SCHEMA
266+
assert smile._last_active["c50f167537524366a5af7aa3942feb1e"] == GF7_WOONKAMER
267+
assert smile._last_active["82fa13f017d240daa0d0ea1775420f24"] == CV_JESSIE
268+
assert smile._last_active["08963fec7c53423ca5680aa4cb502c63"] == BADKAMER_SCHEMA
269+
assert smile._last_active["446ac08dd04d4eff8ac57489757b7314"] == BADKAMER_SCHEMA
270+
assert self.entity_items == 340
271+
272+
assert "af82e4ccf9c548528166d38e560662a4" in self.notifications
273+
274+
result = await self.tinker_thermostat(
275+
smile, "c50f167537524366a5af7aa3942feb1e", good_schedules=[GF7_WOONKAMER]
276+
)
277+
assert result
278+
result = await self.tinker_thermostat(
279+
smile, "82fa13f017d240daa0d0ea1775420f24", good_schedules=[CV_JESSIE]
280+
)
281+
assert result
282+
switch_change = await self.tinker_switch(
283+
smile, "675416a629f343c495449970e2ca37b5"
284+
)
285+
assert not switch_change
286+
await smile.close_connection()
287+
await self.disconnect(server, client)
288+
289+
@pytest.mark.asyncio
290+
async def test_adam_heatpump_cooling(self):
291+
"""Test Adam with heatpump in cooling mode and idle."""
292+
self.smile_setup = "adam_heatpump_cooling"
293+
294+
testdata = self.load_testdata(SMILE_TYPE, self.smile_setup)
295+
server, smile, client = await self.connect_wrapper()
296+
297+
await self.device_test(smile, "2022-01-02 00:00:01", testdata)
298+
assert smile._last_active["b52908550469425b812c87f766fe5303"] == WERKDAG_SCHEMA
299+
assert smile._last_active["20e735858f8146cead98b873177a4f99"] == WERKDAG_SCHEMA
300+
assert smile._last_active["e39529c79ab54fda9bed26cfc0447546"] == WERKDAG_SCHEMA
301+
assert smile._last_active["9a27714b970547ee9a6bdadc2b815ad5"] == WERKDAG_SCHEMA
302+
assert smile._last_active["93ac3f7bf25342f58cbb77c4a99ac0b3"] == WERKDAG_SCHEMA
303+
assert smile._last_active["fa5fa6b34f6b40a0972988b20e888ed4"] == WERKDAG_SCHEMA
304+
assert smile._last_active["04b15f6e884448288f811d29fb7b1b30"] == WERKDAG_SCHEMA
305+
assert smile._last_active["a562019b0b1f47a4bde8ebe3dbe3e8a9"] == WERKDAG_SCHEMA
306+
assert smile._last_active["8cf650a4c10c44819e426bed406aec34"] == WERKDAG_SCHEMA
307+
assert smile._last_active["5cc21042f87f4b4c94ccb5537c47a53f"] == WERKDAG_SCHEMA
308+
assert self.entity_items == 439
309+
310+
await smile.close_connection()
311+
await self.disconnect(server, client)
312+
313+
@pytest.mark.asyncio
314+
async def test_connect_adam_onoff_cooling_fake_firmware(self):
315+
"""Test an Adam with a fake OnOff cooling device in cooling mode."""
316+
self.smile_setup = "adam_onoff_cooling_fake_firmware"
317+
318+
testdata = self.load_testdata(SMILE_TYPE, self.smile_setup)
319+
server, smile, client = await self.connect_wrapper()
320+
assert smile.smile_hostname == "smile000000"
321+
322+
self.validate_test_basics(
323+
_LOGGER,
324+
smile,
325+
smile_version=None,
326+
)
327+
328+
await self.device_test(smile, "2022-01-02 00:00:01", testdata)
329+
assert self.entity_items == 58
330+
assert self.cooling_present
331+
# assert self._cooling_enabled - no cooling_enabled indication present
332+
333+
await smile.close_connection()
334+
await self.disconnect(server, client)
335+
336+
@pytest.mark.asyncio
337+
async def test_connect_adam_plus_anna(self):
338+
"""Test Adam (firmware 3.0) with Anna setup."""
339+
self.smile_setup = "adam_plus_anna"
340+
341+
testdata = self.load_testdata(SMILE_TYPE, self.smile_setup)
342+
server, smile, client = await self.connect_wrapper()
343+
assert smile.smile_hostname == "smile000000"
344+
345+
self.validate_test_basics(
346+
_LOGGER,
347+
smile,
348+
smile_version="3.0.15",
349+
)
350+
351+
await self.device_test(smile, "2020-03-22 00:00:01", testdata)
352+
assert smile.gateway_id == "b128b4bbbd1f47e9bf4d756e8fb5ee94"
353+
assert smile._last_active["009490cc2f674ce6b576863fbb64f867"] == "Weekschema"
354+
assert self.entity_items == 73
355+
assert "6fb89e35caeb4b1cb275184895202d84" in self.notifications
356+
357+
result = await self.tinker_thermostat(
358+
smile, "009490cc2f674ce6b576863fbb64f867", good_schedules=["Weekschema"]
359+
)
360+
assert result
361+
switch_change = await self.tinker_switch(
362+
smile, "aa6b0002df0a46e1b1eb94beb61eddfe"
363+
)
364+
assert switch_change
365+
await smile.close_connection()
366+
await self.disconnect(server, client)
367+
368+
server, smile, client = await self.connect_wrapper(raise_timeout=True)
369+
await self.device_test(smile, "2020-03-22 00:00:01", testdata, skip_testing=True)
370+
result = await self.tinker_thermostat(
371+
smile,
372+
"009490cc2f674ce6b576863fbb64f867",
373+
good_schedules=["Weekschema"],
374+
unhappy=True,
375+
)
376+
assert result
377+
switch_change = await self.tinker_switch(
378+
smile, "aa6b0002df0a46e1b1eb94beb61eddfe", unhappy=True
379+
)
380+
assert switch_change
381+
await smile.close_connection()
382+
await self.disconnect(server, client)
383+
384+
@pytest.mark.asyncio
385+
async def test_adam_plus_jip(self):
386+
"""Test Adam with Jip setup."""
387+
self.smile_setup = "adam_jip"
388+
389+
testdata = self.load_testdata(SMILE_TYPE, self.smile_setup)
390+
server, smile, client = await self.connect_wrapper()
391+
392+
await self.device_test(smile, "2021-06-20 00:00:01", testdata)
393+
assert smile.gateway_id == "b5c2386c6f6342669e50fe49dd05b188"
394+
assert smile._last_active["d58fec52899f4f1c92e4f8fad6d8c48c"] is None
395+
assert smile._last_active["06aecb3d00354375924f50c47af36bd2"] is None
396+
assert smile._last_active["d27aede973b54be484f6842d1b2802ad"] is None
397+
assert smile._last_active["13228dab8ce04617af318a2888b3c548"] is None
398+
assert self.entity_items == 228
399+
400+
# Negative test
401+
result = await self.tinker_thermostat(
402+
smile,
403+
"13228dab8ce04617af318a2888b3c548",
404+
schedule_on=False,
405+
good_schedules=[None],
406+
)
407+
assert result
408+
409+
result = await self.tinker_thermostat_schedule(
410+
smile,
411+
"13228dab8ce04617af318a2888b3c548",
412+
"off",
413+
good_schedules=[None],
414+
)
415+
assert result
416+
await smile.close_connection()
417+
await self.disconnect(server, client)

0 commit comments

Comments
 (0)