feat(abschluss): interne Notiz nach den Unterschriften abfragen

- Nach "Abschliessen" oeffnet sich ein Blatt "Interne Notiz" (optional,
  max. 2000 Zeichen). Ohne Eingabe genuegt ein Tipp auf "Ohne Notiz
  abschliessen"; "Zurueck zur Unterschrift" bricht nur das Abschliessen ab
- Die Notiz reist im Abschluss-Aufruf mit (internalNote) und landet im
  Lieferbericht, nicht in den Kunden-Notizen
- API-Client aus aktueller Backend-Spec neu generiert
- Widget-Tests fuer das Blatt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dennis Nemec
2026-09-25 14:52:51 +02:00
parent dd7fe9a8eb
commit 6b934e4534
13 changed files with 268 additions and 11 deletions

View File

@ -0,0 +1,59 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:hl_lieferservice/feature/delivery/detail/presentation/widget/internal_note_sheet.dart';
void main() {
late InternalNoteDecision? result;
late bool closed;
Future<void> open(WidgetTester tester) async {
result = null;
closed = false;
await tester.pumpWidget(
MaterialApp(
home: Builder(
builder: (context) => Scaffold(
body: TextButton(
onPressed: () async {
result = await showInternalNoteSheet(context);
closed = true;
},
child: const Text('open'),
),
),
),
),
);
await tester.tap(find.text('open'));
await tester.pumpAndSettle();
}
testWidgets('ohne Eingabe: ein Tipp schließt ohne Notiz ab', (tester) async {
await open(tester);
await tester.tap(find.text('Ohne Notiz abschließen'));
await tester.pumpAndSettle();
expect(closed, isTrue);
expect(result, isNotNull);
expect(result!.note, isNull);
});
testWidgets('mit Eingabe: Button wechselt, Text wird getrimmt',
(tester) async {
await open(tester);
await tester.enterText(find.byType(TextField), ' Rückruf wegen Montage ');
await tester.pump();
expect(find.text('Mit Notiz abschließen'), findsOneWidget);
await tester.tap(find.text('Mit Notiz abschließen'));
await tester.pumpAndSettle();
expect(result!.note, 'Rückruf wegen Montage');
});
testWidgets('Zurück bricht das Abschließen ab', (tester) async {
await open(tester);
await tester.tap(find.text('Zurück zur Unterschrift'));
await tester.pumpAndSettle();
expect(closed, isTrue);
expect(result, isNull);
});
}