From cdf46bb12a1aa20d505dd0caef04fe6435363a87 Mon Sep 17 00:00:00 2001 From: gitea Date: Mon, 31 Aug 2026 17:35:50 +0200 Subject: [PATCH] fixes before build 3 --- test/item_edit_sheet_test.dart | 57 ++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 test/item_edit_sheet_test.dart diff --git a/test/item_edit_sheet_test.dart b/test/item_edit_sheet_test.dart new file mode 100644 index 0000000..9cc09be --- /dev/null +++ b/test/item_edit_sheet_test.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:groci/models/line_item.dart'; +import 'package:groci/widgets/item_edit_sheet.dart'; + +void main() { + testWidgets('edit sheet syncs quantity unit and total', (tester) async { + LineItem? saved; + await tester.pumpWidget( + MaterialApp( + home: Scaffold( + body: Builder( + builder: (context) { + return TextButton( + onPressed: () async { + saved = await showItemEditSheet( + context, + item: LineItem( + id: '1', + name: 'Milk', + price: 3.98, + quantity: 2, + unitPrice: 1.99, + ), + ); + }, + child: const Text('Open'), + ); + }, + ), + ), + ), + ); + + await tester.tap(find.text('Open')); + await tester.pumpAndSettle(); + + expect(find.text('Edit item'), findsOneWidget); + expect(find.text('Qty'), findsOneWidget); + expect(find.text('Unit price'), findsOneWidget); + expect(find.text('Total price'), findsOneWidget); + expect(find.text('2 × € 1.99'), findsOneWidget); + + await tester.enterText(find.widgetWithText(TextField, 'Qty'), '3'); + await tester.pump(); + expect(find.text('3 × € 1.99'), findsOneWidget); + + await tester.tap(find.text('Save')); + await tester.pumpAndSettle(); + + expect(saved, isNotNull); + expect(saved!.name, 'Milk'); + expect(saved!.quantity, 3); + expect(saved!.unitPrice, 1.99); + expect(saved!.price, closeTo(5.97, 0.001)); + }); +}