Skip to content

Commit 2893cc3

Browse files
committed
trigger full refresh on command execution and include delete method in update callbacks
1 parent 4aff377 commit 2893cc3

5 files changed

Lines changed: 22 additions & 6 deletions

File tree

openevsehttp/client.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,12 @@ async def update(self, force_full: bool = False) -> None:
118118
# force_full override this behavior.
119119
urls = [f"{self.url}config"]
120120

121-
if not self._ws_listening or force_full:
121+
if (
122+
not self._ws_listening
123+
or force_full
124+
or not self._status
125+
or "state" not in self._status
126+
):
122127
urls = [f"{self.url}status", f"{self.url}config"]
123128

124129
for url in urls:
@@ -690,6 +695,8 @@ async def set_divert_mode(self, mode: str = "fast") -> None:
690695
_LOGGER.error("Problem issuing command. Response: %s", response)
691696
raise UnknownError
692697

698+
await self.full_refresh()
699+
693700
# Properties
694701
@property
695702
def led_brightness(self) -> int | None:

openevsehttp/requester.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ async def _process_request_with_session(
136136
return message
137137

138138
if (
139-
method in ("post", "patch", "put")
139+
method in ("post", "patch", "put", "delete")
140140
and isinstance(message, dict)
141141
and message.get("ok", True) is not False
142142
and self._update_callback

tests/conftest.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,13 @@ def test_charger_new(mock_aioclient):
110110
TEST_URL_STATUS,
111111
status=200,
112112
body=load_fixture("v4_json/status-new.json"),
113+
repeat=True,
113114
)
114115
mock_aioclient.get(
115116
TEST_URL_CONFIG,
116117
status=200,
117118
body=load_fixture("v4_json/config-new.json"),
119+
repeat=True,
118120
)
119121
mock_aioclient.get(
120122
TEST_URL_WS,
@@ -212,11 +214,13 @@ def test_charger_legacy(mock_aioclient):
212214
TEST_URL_STATUS,
213215
status=200,
214216
body=load_fixture("v_legacy_json/status.json"),
217+
repeat=True,
215218
)
216219
mock_aioclient.get(
217220
TEST_URL_CONFIG,
218221
status=200,
219222
body=load_fixture("v_legacy_json/config.json"),
223+
repeat=True,
220224
)
221225
mock_aioclient.get(
222226
TEST_URL_WS,

tests/test_client.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,6 +1445,7 @@ async def test_led_brightness(mock_aioclient):
14451445
charger._config["version"] = "4.1.0"
14461446
charger._config["led_brightness"] = 128
14471447
mock_aioclient.post(TEST_URL_CONFIG, status=200, body='{"msg": "done"}')
1448+
charger.requester._update_callback = None
14481449
await charger.set_led_brightness(255)
14491450
assert charger.led_brightness == 128
14501451

@@ -1458,10 +1459,11 @@ async def test_set_divert_mode(mock_aioclient):
14581459
await charger.set_divert_mode("invalid")
14591460

14601461
# Success
1461-
mock_aioclient.post(
1462-
f"http://{SERVER_URL}/divertmode", status=200, body="Divert Mode changed"
1463-
)
1464-
await charger.set_divert_mode("eco")
1462+
with patch.object(charger, "full_refresh", AsyncMock()):
1463+
mock_aioclient.post(
1464+
f"http://{SERVER_URL}/divertmode", status=200, body="Divert Mode changed"
1465+
)
1466+
await charger.set_divert_mode("eco")
14651467

14661468
# Failure
14671469
mock_aioclient.post(f"http://{SERVER_URL}/divertmode", status=200, body="Error")

tests/test_override.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ async def test_toggle_override_modified_ver(
122122
async def test_toggle_override_v2(test_charger_legacy, mock_aioclient, caplog):
123123
"""Test legacy toggle override."""
124124
await test_charger_legacy.update()
125+
test_charger_legacy.requester._update_callback = None
125126
value = {"cmd": "OK", "ret": "$OK"}
126127
mock_aioclient.post(
127128
TEST_URL_RAPI,
@@ -318,6 +319,7 @@ async def test_set_override_success(
318319
):
319320
"""Verify that set_override correctly sends various override parameters to the device."""
320321
await test_charger.update()
322+
test_charger.requester._update_callback = None
321323
value = {
322324
"state": "active",
323325
"charge_current": 0,
@@ -437,6 +439,7 @@ async def test_get_override(test_charger, test_charger_legacy, mock_aioclient, c
437439
async def test_set_override_partial(test_charger, mock_aioclient, caplog):
438440
"""Verify that set_override correctly merges partial updates with current override state."""
439441
await test_charger.update()
442+
test_charger.requester._update_callback = None
440443
value = {
441444
"state": "active",
442445
"charge_current": 32,

0 commit comments

Comments
 (0)