@@ -254,7 +254,7 @@ def append_response(self, send_response) -> None:
254254 """Add response to queue."""
255255 self .send_response .append (send_response )
256256
257- def clear_response (self ) -> None :
257+ def clear_responses (self ) -> None :
258258 """Clear response queue."""
259259 self .send_response .clear ()
260260
@@ -2302,7 +2302,7 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
23022302 )
23032303
23042304 # scan with cache enabled
2305- mock_stick_controller .clear_response ()
2305+ mock_stick_controller .clear_responses ()
23062306 test_scan = pw_scan .PlugwiseScan (
23072307 "1298347650AFBECD" ,
23082308 pw_api .NodeType .SCAN ,
@@ -2415,6 +2415,23 @@ def fake_cache_bool(dummy: object, setting: str) -> bool | None:
24152415 construct_message (b"0100555555555555555500B4" , b"0000" )
24162416 )
24172417
2418+ awake_response = pw_responses .NodeAwakeResponse ()
2419+ awake_response .deserialize (
2420+ construct_message (b"004F555555555555555500" , b"FFFE" )
2421+ )
2422+
2423+ async def run_awake_with_response (responses ):
2424+ """Wake node up and run tasks."""
2425+ mock_stick_controller .clear_responses ()
2426+ for r in responses :
2427+ mock_stick_controller .append_response (r )
2428+ awake_response .timestamp = awake_response .timestamp + td (
2429+ seconds = pw_sed .AWAKE_RETRY
2430+ )
2431+ await test_sense ._awake_response (awake_response ) # pylint: disable=protected-access
2432+ assert test_sense ._delayed_task is not None # pylint: disable=protected-access
2433+ await asyncio .wait_for (asyncio .shield (test_sense ._delayed_task ), timeout = 2 )
2434+
24182435 async def load_callback (event : pw_api .NodeEvent , mac : str ) -> None : # type: ignore[name-defined]
24192436 """Load callback for event."""
24202437
@@ -2466,26 +2483,20 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
24662483 assert await test_sense .set_hysteresis_humidity_direction (False )
24672484
24682485 # Restore to original settings after failed config
2469- awake_response1 = pw_responses .NodeAwakeResponse ()
2470- awake_response1 .deserialize (
2471- construct_message (b"004F555555555555555500" , b"FFFE" )
2472- )
2473- mock_stick_controller .append_response (sense_config_failed )
2474- mock_stick_controller .append_response (sense_config_accepted )
2475- mock_stick_controller .append_response (sense_config_report_interval_accepted )
2476- await test_sense ._awake_response (awake_response1 ) # pylint: disable=protected-access
2477- assert test_sense ._delayed_task is not None # pylint: disable=protected-access
2478- await asyncio .wait_for (asyncio .shield (test_sense ._delayed_task ), timeout = 2 )
2479-
2480- mock_stick_controller .append_response (sense_config_accepted )
2481- mock_stick_controller .append_response (sense_config_accepted )
2482- mock_stick_controller .append_response (sense_config_report_interval_accepted )
2483- awake_response1 .timestamp = awake_response1 .timestamp + td (
2484- seconds = pw_sed .AWAKE_RETRY
2485- )
2486- await test_sense ._awake_response (awake_response1 ) # pylint: disable=protected-access
2487- assert test_sense ._delayed_task is not None # pylint: disable=protected-access
2488- await asyncio .wait_for (asyncio .shield (test_sense ._delayed_task ), timeout = 2 )
2486+ responses = [
2487+ sense_config_failed ,
2488+ sense_config_accepted ,
2489+ sense_config_report_interval_accepted ,
2490+ ]
2491+ await run_awake_with_response (responses )
2492+ assert test_sense .hysteresis_config_dirty
2493+
2494+ responses = [
2495+ sense_config_accepted ,
2496+ sense_config_accepted ,
2497+ sense_config_report_interval_accepted ,
2498+ ]
2499+ await run_awake_with_response (responses )
24892500 assert not test_sense .hysteresis_config_dirty
24902501 assert test_sense .humidity_upper_bound == 65
24912502
@@ -2504,15 +2515,12 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
25042515 assert test_sense .humidity_lower_bound == 55
25052516
25062517 # Successful config
2507- mock_stick_controller .append_response (sense_config_accepted )
2508- mock_stick_controller .append_response (sense_config_accepted )
2509- mock_stick_controller .append_response (sense_config_report_interval_accepted )
2510- awake_response1 .timestamp = awake_response1 .timestamp + td (
2511- seconds = pw_sed .AWAKE_RETRY
2512- )
2513- await test_sense ._awake_response (awake_response1 ) # pylint: disable=protected-access
2514- assert test_sense ._delayed_task is not None # pylint: disable=protected-access
2515- await asyncio .wait_for (asyncio .shield (test_sense ._delayed_task ), timeout = 2 )
2518+ responses = [
2519+ sense_config_accepted ,
2520+ sense_config_accepted ,
2521+ sense_config_report_interval_accepted ,
2522+ ]
2523+ await run_awake_with_response (responses )
25162524 assert not test_sense .hysteresis_config_dirty
25172525 assert test_sense .humidity_lower_bound == 55
25182526
@@ -2535,27 +2543,21 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
25352543 assert await test_sense .set_hysteresis_temperature_direction (False )
25362544
25372545 # Restore to original settings after failed config
2538- mock_stick_controller .append_response (sense_config_accepted )
2539- mock_stick_controller .append_response (sense_config_failed )
2540- mock_stick_controller .append_response (sense_config_report_interval_accepted )
2541- awake_response1 .timestamp = awake_response1 .timestamp + td (
2542- seconds = pw_sed .AWAKE_RETRY
2543- )
2544- await test_sense ._awake_response (awake_response1 ) # pylint: disable=protected-access
2545- assert test_sense ._delayed_task is not None # pylint: disable=protected-access
2546- await asyncio .wait_for (asyncio .shield (test_sense ._delayed_task ), timeout = 2 )
2546+ responses = [
2547+ sense_config_accepted ,
2548+ sense_config_failed ,
2549+ sense_config_report_interval_accepted ,
2550+ ]
2551+ await run_awake_with_response (responses )
25472552 assert test_sense .hysteresis_config_dirty
25482553
25492554 # Successful config
2550- mock_stick_controller .append_response (sense_config_accepted )
2551- mock_stick_controller .append_response (sense_config_accepted )
2552- mock_stick_controller .append_response (sense_config_report_interval_accepted )
2553- awake_response1 .timestamp = awake_response1 .timestamp + td (
2554- seconds = pw_sed .AWAKE_RETRY
2555- )
2556- await test_sense ._awake_response (awake_response1 ) # pylint: disable=protected-access
2557- assert test_sense ._delayed_task is not None # pylint: disable=protected-access
2558- await asyncio .wait_for (asyncio .shield (test_sense ._delayed_task ), timeout = 2 )
2555+ responses = [
2556+ sense_config_accepted ,
2557+ sense_config_accepted ,
2558+ sense_config_report_interval_accepted ,
2559+ ]
2560+ await run_awake_with_response (responses )
25592561 assert not test_sense .hysteresis_config_dirty
25602562 assert test_sense .temperature_upper_bound == 26
25612563
@@ -2574,15 +2576,12 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
25742576 assert test_sense .temperature_lower_bound == 24
25752577
25762578 # Successful config
2577- mock_stick_controller .append_response (sense_config_accepted )
2578- mock_stick_controller .append_response (sense_config_accepted )
2579- mock_stick_controller .append_response (sense_config_report_interval_accepted )
2580- awake_response1 .timestamp = awake_response1 .timestamp + td (
2581- seconds = pw_sed .AWAKE_RETRY
2582- )
2583- await test_sense ._awake_response (awake_response1 ) # pylint: disable=protected-access
2584- assert test_sense ._delayed_task is not None # pylint: disable=protected-access
2585- await asyncio .wait_for (asyncio .shield (test_sense ._delayed_task ), timeout = 2 )
2579+ responses = [
2580+ sense_config_accepted ,
2581+ sense_config_accepted ,
2582+ sense_config_report_interval_accepted ,
2583+ ]
2584+ await run_awake_with_response (responses )
25862585 assert not test_sense .hysteresis_config_dirty
25872586 assert test_sense .temperature_lower_bound == 24
25882587
@@ -2595,31 +2594,24 @@ async def load_callback(event: pw_api.NodeEvent, mac: str) -> None: # type: ign
25952594 assert not test_sense .hysteresis_config_dirty
25962595 assert await test_sense .set_report_interval (5 )
25972596 assert test_sense .hysteresis_config_dirty
2598- assert test_sense .hysteresis_config_dirty
25992597 assert test_sense .report_interval == 5
26002598
26012599 # Failed config
2602- mock_stick_controller .append_response (sense_config_accepted )
2603- mock_stick_controller .append_response (sense_config_accepted )
2604- mock_stick_controller .append_response (sense_config_report_interval_failed )
2605- awake_response1 .timestamp = awake_response1 .timestamp + td (
2606- seconds = pw_sed .AWAKE_RETRY
2607- )
2608- await test_sense ._awake_response (awake_response1 ) # pylint: disable=protected-access
2609- assert test_sense ._delayed_task is not None # pylint: disable=protected-access
2610- await asyncio .wait_for (asyncio .shield (test_sense ._delayed_task ), timeout = 2 )
2600+ responses = [
2601+ sense_config_accepted ,
2602+ sense_config_accepted ,
2603+ sense_config_report_interval_failed ,
2604+ ]
2605+ await run_awake_with_response (responses )
26112606 assert test_sense .hysteresis_config_dirty
26122607
26132608 # Successful config
2614- mock_stick_controller .append_response (sense_config_accepted )
2615- mock_stick_controller .append_response (sense_config_accepted )
2616- mock_stick_controller .append_response (sense_config_report_interval_accepted )
2617- awake_response1 .timestamp = awake_response1 .timestamp + td (
2618- seconds = pw_sed .AWAKE_RETRY
2619- )
2620- await test_sense ._awake_response (awake_response1 ) # pylint: disable=protected-access
2621- assert test_sense ._delayed_task is not None # pylint: disable=protected-access
2622- await asyncio .wait_for (asyncio .shield (test_sense ._delayed_task ), timeout = 2 )
2609+ responses = [
2610+ sense_config_accepted ,
2611+ sense_config_accepted ,
2612+ sense_config_report_interval_accepted ,
2613+ ]
2614+ await run_awake_with_response (responses )
26232615 assert not test_sense .hysteresis_config_dirty
26242616 assert test_sense .report_interval == 5
26252617
0 commit comments