fix: gespeicherte Fahrzeugauswahl gegen Server-Fahrzeuge prüfen

Die Tagesauswahl liegt lokal pro Fahrer und wurde ungeprüft
wiederhergestellt. Durch den alten Session-Fehler hatte 414 auf dem
Gerät das Fahrzeug von 423 gespeichert — das erschien weiter, obwohl
„Fahrzeug verwalten" (frisch vom Server) leer war.

CarSelectBloc lädt beim Wiederherstellen die Fahrzeuge des Accounts vom
Server und übernimmt die Auswahl nur, wenn das Fahrzeug dazugehört und
aktiv ist; sonst wird sie verworfen und neu abgefragt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dennis Nemec
2026-09-25 16:53:37 +02:00
parent dce4447fcc
commit a5215367fd
5 changed files with 115 additions and 18 deletions

View File

@ -12,8 +12,10 @@ import 'package:hl_lieferservice/feature/authentication/bloc/auth_bloc.dart';
import 'package:hl_lieferservice/feature/car_selection/bloc/bloc.dart';
import 'package:hl_lieferservice/feature/delivery/bloc/tour_date_cubit.dart';
import 'package:hl_lieferservice/feature/payment_methods/bloc/payment_methods_cubit.dart';
import 'package:hl_lieferservice/main.dart' show locator;
import 'package:hl_lieferservice/widget/operations/bloc/operation_bloc.dart';
import 'package:hl_lieferservice/widget/session_scope.dart';
import 'package:holzleitner_api/holzleitner_api.dart' show HolzleitnerApi;
/// Token-Provider ohne Keycloak: der Test steuert Login/Logout über [emit].
class _FakeTokenProvider implements KeycloakOidcTokenProvider {
@ -45,6 +47,14 @@ AuthLoggedIn _login(int personalnummer) =>
AuthLoggedIn({'personalnummer': personalnummer, 'name': 'Fahrer'});
void main() {
// Session-Blocs bauen ihre Repositories gegen den API-Client; im Test
// reicht ein unbenutzter Client (es wird nichts geladen).
setUpAll(() {
if (!locator.isRegistered<HolzleitnerApi>()) {
locator.registerSingleton<HolzleitnerApi>(HolzleitnerApi());
}
});
late _FakeTokenProvider provider;
late _CountingPaymentMethods payments;
late List<CarSelectBloc> carSelections;