Skip to content

Commit 4f44cbc

Browse files
committed
Move tests from test_combined into test_adam
1 parent 08bb895 commit 4f44cbc

File tree

1 file changed

+223
-0
lines changed

1 file changed

+223
-0
lines changed

tests/test_adam.py

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,3 +173,226 @@ async def test_connect_adam_onoff_cooling_fake_firmware(self):
173173

174174
await smile.close_connection()
175175
await self.disconnect(server, client)
176+
177+
@pytest.mark.asyncio
178+
async def test_connect_adam_plus_anna(self):
179+
"""Test Adam (firmware 3.0) with Anna setup."""
180+
self.smile_setup = "adam_plus_anna"
181+
182+
testdata = self.load_testdata(SMILE_TYPE, self.smile_setup)
183+
server, smile, client = await self.connect_wrapper()
184+
assert smile.smile_hostname == "smile000000"
185+
186+
self.validate_test_basics(
187+
_LOGGER,
188+
smile,
189+
smile_version="3.0.15",
190+
)
191+
192+
await self.device_test(smile, "2020-03-22 00:00:01", testdata)
193+
assert smile.gateway_id == "b128b4bbbd1f47e9bf4d756e8fb5ee94"
194+
assert smile._last_active["009490cc2f674ce6b576863fbb64f867"] == "Weekschema"
195+
assert smile.device_items == 70
196+
assert "6fb89e35caeb4b1cb275184895202d84" in self.notifications
197+
198+
result = await self.tinker_thermostat(
199+
smile, "009490cc2f674ce6b576863fbb64f867", good_schedules=["Weekschema"]
200+
)
201+
assert result
202+
switch_change = await self.tinker_switch(
203+
smile, "aa6b0002df0a46e1b1eb94beb61eddfe"
204+
)
205+
assert switch_change
206+
await smile.close_connection()
207+
await self.disconnect(server, client)
208+
209+
server, smile, client = await self.connect_wrapper(raise_timeout=True)
210+
await self.device_test(smile, "2020-03-22 00:00:01", testdata)
211+
result = await self.tinker_thermostat(
212+
smile,
213+
"009490cc2f674ce6b576863fbb64f867",
214+
good_schedules=["Weekschema"],
215+
unhappy=True,
216+
)
217+
assert result
218+
switch_change = await self.tinker_switch(
219+
smile, "aa6b0002df0a46e1b1eb94beb61eddfe", unhappy=True
220+
)
221+
assert switch_change
222+
await smile.close_connection()
223+
await self.disconnect(server, client)
224+
225+
@pytest.mark.asyncio
226+
async def test_connect_adam_plus_anna_copy_with_error_domain_added(self):
227+
"""Test erroneous domain_objects file from user."""
228+
testdata = {
229+
# Central
230+
"2743216f626f43948deec1f7ab3b3d70": {
231+
"binary_sensors": {"heating_state": False},
232+
},
233+
}
234+
235+
self.smile_setup = "adam_plus_anna_copy_with_error_domain_added"
236+
server, smile, client = await self.connect_wrapper()
237+
assert smile.smile_hostname == "smile000000"
238+
239+
self.validate_test_basics(
240+
_LOGGER,
241+
smile,
242+
smile_version="3.0.23",
243+
)
244+
245+
await self.device_test(smile, "2020-03-22 00:00:01", testdata)
246+
assert smile.device_items == 70
247+
248+
assert "3d28a20e17cb47dca210a132463721d5" in self.notifications
249+
250+
await smile.close_connection()
251+
await self.disconnect(server, client)
252+
253+
@pytest.mark.asyncio
254+
async def test_connect_adam_plus_anna_new(self):
255+
"""Test extended Adam (firmware 3.8) with Anna and a switch-group setup."""
256+
self.smile_setup = "adam_plus_anna_new"
257+
258+
testdata = self.load_testdata(SMILE_TYPE, self.smile_setup)
259+
server, smile, client = await self.connect_wrapper()
260+
assert smile.smile_hostname == "smile000000"
261+
262+
self.validate_test_basics(
263+
_LOGGER,
264+
smile,
265+
smile_type=None,
266+
smile_version="3.7.8",
267+
)
268+
269+
await self.device_test(smile, "2023-12-17 00:00:01", testdata)
270+
assert smile.gateway_id == "da224107914542988a88561b4452b0f6"
271+
assert smile._last_active["f2bf9048bef64cc5b6d5110154e33c81"] == "Weekschema"
272+
assert smile._last_active["f871b8c4d63549319221e294e4f88074"] == "Badkamer"
273+
assert smile.device_items == 145
274+
assert smile.device_list == [
275+
"da224107914542988a88561b4452b0f6",
276+
"056ee145a816487eaa69243c3280f8bf",
277+
"67d73d0bd469422db25a618a5fb8eeb0",
278+
"e2f4322d57924fa090fbbc48b3a140dc",
279+
"854f8a9b0e7e425db97f1f110e1ce4b3",
280+
"ad4838d7d35c4d6ea796ee12ae5aedf8",
281+
"29542b2b6a6a4169acecc15c72a599b8",
282+
"1772a4ea304041adb83f357b751341ff",
283+
"2568cc4b9c1e401495d4741a5f89bee1",
284+
"e8ef2a01ed3b4139a53bf749204fe6b4",
285+
]
286+
287+
result = await self.tinker_thermostat(
288+
smile,
289+
"f2bf9048bef64cc5b6d5110154e33c81",
290+
good_schedules=["Weekschema", "Badkamer", "Test"],
291+
)
292+
assert result
293+
294+
# Special test-case for turning a schedule off based on only the location id.
295+
await smile.set_schedule_state("f2bf9048bef64cc5b6d5110154e33c81", "off")
296+
297+
# Special test-case for turning a schedule off for a location via the option "off".
298+
await smile.set_schedule_state("f2bf9048bef64cc5b6d5110154e33c81", "on", "off")
299+
300+
# bad schedule-state test
301+
result = await self.tinker_thermostat_schedule(
302+
smile,
303+
"f2bf9048bef64cc5b6d5110154e33c81",
304+
"bad",
305+
good_schedules=["Badkamer"],
306+
single=True,
307+
)
308+
assert result
309+
310+
smile._schedule_old_states["f2bf9048bef64cc5b6d5110154e33c81"][
311+
"Badkamer"
312+
] = "off"
313+
result_1 = await self.tinker_thermostat_schedule(
314+
smile,
315+
"f2bf9048bef64cc5b6d5110154e33c81",
316+
"on",
317+
good_schedules=["Badkamer"],
318+
single=True,
319+
)
320+
result_2 = await self.tinker_thermostat_schedule(
321+
smile,
322+
"f2bf9048bef64cc5b6d5110154e33c81",
323+
"on",
324+
good_schedules=["Badkamer"],
325+
single=True,
326+
)
327+
assert result_1 and result_2
328+
329+
switch_change = await self.tinker_switch(
330+
smile,
331+
"e8ef2a01ed3b4139a53bf749204fe6b4",
332+
["2568cc4b9c1e401495d4741a5f89bee1", "29542b2b6a6a4169acecc15c72a599b8"],
333+
)
334+
assert switch_change
335+
switch_change = await self.tinker_switch(
336+
smile, "056ee145a816487eaa69243c3280f8bf", model="dhw_cm_switch"
337+
)
338+
assert switch_change
339+
switch_change = await self.tinker_switch(
340+
smile, "854f8a9b0e7e425db97f1f110e1ce4b3", model="lock"
341+
)
342+
assert switch_change
343+
switch_change = await self.tinker_switch(
344+
smile, "2568cc4b9c1e401495d4741a5f89bee1"
345+
)
346+
assert not switch_change
347+
348+
await self.tinker_regulation_mode(smile)
349+
350+
await self.tinker_max_boiler_temp(smile)
351+
352+
# Now change some data and change directory reading xml from
353+
# emulating reading newer dataset after an update_interval
354+
testdata_updated = self.load_testdata(
355+
SMILE_TYPE, f"{self.smile_setup}_UPDATED_DATA"
356+
)
357+
self.smile_setup = "updated/adam_plus_anna_new"
358+
await self.device_test(
359+
smile, "2022-01-16 00:00:01", testdata_updated, initialize=False
360+
)
361+
362+
await smile.close_connection()
363+
await self.disconnect(server, client)
364+
365+
@pytest.mark.asyncio
366+
async def test_adam_plus_jip(self):
367+
"""Test Adam with Jip setup."""
368+
self.smile_setup = "adam_jip"
369+
370+
testdata = self.load_testdata(SMILE_TYPE, self.smile_setup)
371+
server, smile, client = await self.connect_wrapper()
372+
373+
await self.device_test(smile, "2021-06-20 00:00:01", testdata)
374+
assert smile.gateway_id == "b5c2386c6f6342669e50fe49dd05b188"
375+
assert smile._last_active["d58fec52899f4f1c92e4f8fad6d8c48c"] is None
376+
assert smile._last_active["06aecb3d00354375924f50c47af36bd2"] is None
377+
assert smile._last_active["d27aede973b54be484f6842d1b2802ad"] is None
378+
assert smile._last_active["13228dab8ce04617af318a2888b3c548"] is None
379+
assert smile.device_items == 219
380+
381+
# Negative test
382+
result = await self.tinker_thermostat(
383+
smile,
384+
"13228dab8ce04617af318a2888b3c548",
385+
schedule_on=False,
386+
good_schedules=[None],
387+
)
388+
assert result
389+
390+
result = await self.tinker_thermostat_schedule(
391+
smile,
392+
"13228dab8ce04617af318a2888b3c548",
393+
"off",
394+
good_schedules=[None],
395+
)
396+
assert result
397+
await smile.close_connection()
398+
await self.disconnect(server, client)

0 commit comments

Comments
 (0)