Skip to content

Conversation

@rleidner
Copy link
Collaborator

Do a soc calculation as fallback when the query of soc/range from server fails.

@rleidner
Copy link
Collaborator Author

@lenak,
Hier gingen diese 3 Tests jetzt schief:
FAILED packages/modules/vehicles/evnotify/EVNotify_test.py::TestEVNotify::test_update_passes_errors_to_context
FAILED packages/modules/vehicles/skoda/soc_test.py::TestSkoda::test_update_passes_errors_to_context
FAILED packages/modules/vehicles/tesla/soc_test.py::TestTesla::test_update_passes_errors_to_context

In der Änderung Werden Exceptions im SOC-Modul abgefangen und als Fallback die Berechnung gemacht und deren Ergebnis als CarState zurückgeliefert.
Ich habe die entsprechenden Tests jetzt mal kommentiert...

Copy link
Contributor

@LKuemmel LKuemmel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Es muss noch berücksichtigt werden, ob der letzte, erfolgreich abgefragte SoC nach dem Anstecken ermittelt wurde, sonst berechnet man möglicherweise von einem sehr alten SoC und das Auto wurde zwischenzeitlich noch gefahren.
Wenn eine Berechnung nicht möglich ist, sollte der SoC auch nicht direkt auf 0% gesetzt werden, sondern erst nach der 3. erfolglosen Abfrage so wie bisher. (hier Exception werfen und dann setzt die Regelung das entsprechend)

@LKuemmel
Copy link
Contributor

LKuemmel commented Dec 1, 2025

Die Tests schlagen fehl, weil die Fehlermeldung "verschluckt" wird. Zumindest wenn keine Berechnung möglich ist, weil nach dem Anstecken kein SoC mehr abgefragt werden konnte, sollte die Fehlermeldung im UI angezeigt werden. (Exception werfen und damit die Verarbeitung abbrechen, nicht nur ins Log schreiben)

@rleidner
Copy link
Collaborator Author

rleidner commented Dec 2, 2025

Es muss noch berücksichtigt werden, ob der letzte, erfolgreich abgefragte SoC nach dem Anstecken ermittelt wurde, sonst berechnet man möglicherweise von einem sehr alten SoC und das Auto wurde zwischenzeitlich noch gefahren.
-> ist jetzt implementiert

Wenn eine Berechnung nicht möglich ist, sollte der SoC auch nicht direkt auf 0% gesetzt werden, sondern erst nach der 3. erfolglosen Abfrage so wie bisher. (hier Exception werfen und dann setzt die Regelung das entsprechend)
-> ist jetzt implementiert

Die Tests schlagen fehl, weil die Fehlermeldung "verschluckt" wird. Zumindest wenn keine Berechnung möglich ist, weil nach dem Anstecken kein SoC mehr abgefragt werden konnte, sollte die Fehlermeldung im UI angezeigt werden. (Exception werfen und damit die Verarbeitung abbrechen, nicht nur ins Log schreiben)
-> sollte jetzt so implementiert sein, die Tests gingen lokal aber trotzdem schief, deshalb noch auskommentiert

@rleidner rleidner requested a review from LKuemmel December 2, 2025 15:35
Copy link
Contributor

@LKuemmel LKuemmel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Die Lösung funktioniert, ist aber noch etwas ausführlich – sie lässt sich im Sinne von Clean Code noch verschlanken.

Die Tests bitte nicht auskommentieren, sonst sehe ich die Fehlermeldung nicht und kann Dir da auch nicht weiter helfen.

@rleidner
Copy link
Collaborator Author

rleidner commented Dec 3, 2025

Hallo Lena, danke für das ausführliche Review.
Für die Bereinigung des Code werde ich etwas Zeit benötigen, voraussichtlich kann ich das erst nächste Woche fertig machen.
Die 3 Tests habe ich wieder reingenommen, jetzt ist pytest "failed".

@LKuemmel
Copy link
Contributor

LKuemmel commented Dec 4, 2025

error = Exception('API Error')
def assert_context_manager_called_with(self, error):
assert self.mock_context_exit.call_count == 1
assert self.mock_context_exit.call_args[0][1] is error
E AssertionError: assert Exception('SoC von Fahrzeug Unknown kann weder ausgelesen noch berechnet werden') is Exception('API Error')

Die geworfene Exception stimmt nicht mit der erwarteten überein, weil sich durch deine Änderung der Text der Exception geändert hat. Die Tests müssen dann auf den neuen Text der Exception angepasst werden.
Können wir uns auch nochmal anschauen, wenn Du die Änderungen von oben umgesetzt hast.

@rleidner
Copy link
Collaborator Author

rleidner commented Dec 8, 2025

Hallo Lena,
ich habe es überarbeitet wie von Dir vorgeschlagen.
Die 3 pytest gehen noch schief - da bräuchte ich Deine Hilfe.

@rleidner
Copy link
Collaborator Author

rleidner commented Dec 8, 2025

Hallo Lena,
ich habe jetzt die 3 Tests geändert mit einem substring Konstrukt.
Damit sind die Fehler raus.

@rleidner rleidner requested a review from LKuemmel December 9, 2025 11:19
@LKuemmel LKuemmel merged commit 8259acd into openWB:master Dec 9, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants