Commit 43d9043
Changed files (2)
lib
test
ui
components
lib/main.dart
@@ -9,7 +9,6 @@ import 'package:blood_pressure_app/model/storage/db/config_db.dart';
import 'package:blood_pressure_app/model/storage/intervall_store.dart';
import 'package:blood_pressure_app/model/storage/settings_store.dart';
import 'package:blood_pressure_app/model/storage/update_legacy_settings.dart';
-import 'package:blood_pressure_app/screens/home_screen.dart';
import 'package:blood_pressure_app/screens/loading_screen.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@@ -19,6 +18,12 @@ import 'package:path/path.dart';
import 'package:provider/provider.dart';
import 'package:sqflite/sqflite.dart';
+import 'components/dialoges/import_preview_dialoge.dart';
+import 'model/export_import/csv_converter.dart';
+import 'model/export_import/csv_record_parsing_actor.dart';
+import 'model/storage/export_columns_store.dart';
+import 'model/storage/export_csv_settings_store.dart';
+
late final ConfigDB _database;
late final BloodPressureModel _bloodPressureModel;
@@ -124,8 +129,19 @@ class AppRoot extends StatelessWidget {
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
locale: settings.language,
- home: const AppHome(),
- ),
+ home: ImportPreviewDialoge(
+ bottomAppBar: false,
+ initialActor: CsvRecordParsingActor(
+ CsvConverter(
+ CsvExportSettings(),
+ ExportColumnsManager(),
+ ),
+ 'systolic,diastolic,pulse,notes,needlePin\n123,45,67,note1,'
+ '"{""color"":4285132974}"\n114,71,56,,null',
+ ),
+ columnsManager: ExportColumnsManager(),
+ ),
+ )
);
ThemeData _buildTheme(ColorScheme colorScheme) {
test/ui/components/import_preview_dialoge_test.dart
@@ -1,9 +1,11 @@
+import 'package:blood_pressure_app/components/custom_banner.dart';
import 'package:blood_pressure_app/components/dialoges/import_preview_dialoge.dart';
import 'package:blood_pressure_app/model/export_import/csv_converter.dart';
import 'package:blood_pressure_app/model/export_import/csv_record_parsing_actor.dart';
import 'package:blood_pressure_app/model/storage/export_columns_store.dart';
import 'package:blood_pressure_app/model/storage/export_csv_settings_store.dart';
import 'package:flutter/material.dart';
+import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_test/flutter_test.dart';
import 'util.dart';
@@ -21,11 +23,13 @@ void main() {
',123,45,67,note1,"{""color"":4285132974}"\n1703147206000,114,71,56,,null',
),
columnsManager: ExportColumnsManager(),
- )));
+ ),),);
expect(tester.takeException(), isNull);
expect(find.byType(DropdownButton), findsNWidgets(6), reason: '6 columns');
expect(find.text('note1'), findsOneWidget);
+ expect(find.byType(CustomBanner), findsNothing, reason: 'no error');
+
});
testWidgets('should limit rows', (tester) async {
var csvTxt = 'timestampUnixMs,systolic,diastolic,pulse,notes,needlePin';
@@ -43,11 +47,60 @@ void main() {
csvTxt,
),
columnsManager: ExportColumnsManager(),
- )));
+ ),),);
expect(find.text('row-content'), findsNWidgets(30));
await tester.dragFrom(Offset(10, tester.view.physicalSize.height), Offset(0, -(tester.view.physicalSize.height)));
await tester.pumpAndSettle();
expect(find.text('…'), findsAtLeast(1));
});
+ testWidgets('should show error banner', (tester) async {
+ await tester.pumpWidget(materialApp(ImportPreviewDialoge(
+ bottomAppBar: false,
+ initialActor: CsvRecordParsingActor(
+ CsvConverter(
+ CsvExportSettings(),
+ ExportColumnsManager(),
+ ),
+ 'systolic,diastolic,pulse,notes,needlePin\n123,45,67,note1,'
+ '"{""color"":4285132974}"\n114,71,56,,null',
+ ),
+ columnsManager: ExportColumnsManager(),
+ ),),);
+ await tester.pumpAndSettle();
+
+ expect(find.byType(CustomBanner), findsOneWidget);
+ final localizations = await AppLocalizations.delegate.load(const Locale('en'));
+ expect(find.text(localizations.errParseTimeNotRestoreable), findsOneWidget);
+ });
+ testWidgets('should have multiple lines', (tester) async {
+ await tester.pumpWidget(materialApp(ImportPreviewDialoge(
+ bottomAppBar: false,
+ initialActor: CsvRecordParsingActor(
+ CsvConverter(
+ CsvExportSettings(),
+ ExportColumnsManager(),
+ ),
+ 'line1\nline2\nline3',
+ ),
+ columnsManager: ExportColumnsManager(),
+ ),),);
+
+ expect(find.byType(CheckboxMenuButton), findsOneWidget);
+ expect(tester.getSemantics(find.byType(Checkbox)), containsSemantics(
+ isChecked: true,
+ ),);
+ expect(find.text('line1'), findsNothing);
+ expect(find.text('line2'), findsOneWidget);
+ expect(find.text('line3'), findsOneWidget);
+
+ await tester.tap(find.byType(CheckboxMenuButton));
+ await tester.pumpAndSettle();
+ expect(tester.getSemantics(find.byType(Checkbox)), containsSemantics(
+ isChecked: false,
+ ),);
+ expect(find.text('line1'), findsOneWidget);
+ expect(find.text('line2'), findsOneWidget);
+ expect(find.text('line3'), findsOneWidget);
+ });
}