Commit 120dbdd

derdilla <derdilla06@gmail.com>
2023-06-23 08:14:35
add test case
1 parent aa1703e
Changed files (2)
lib/screens/statistics.dart
@@ -21,7 +21,9 @@ class StatisticsPage extends StatelessWidget {
           return Consumer<Settings>(builder: (context, settings, child) {
             return Column(
               children: [
-                Statistic(caption: Text(AppLocalizations.of(context)!.statistics), child: futureInt(model.count)),
+                Statistic(
+                    key: const Key('measurementCount'),
+                    caption: Text(AppLocalizations.of(context)!.measurementCount), child: futureInt(model.count)),
                 // special measurements
                 StatisticsRow(
                   caption1: Text(
test/ui/statistics_text.dart
@@ -0,0 +1,48 @@
+import 'package:blood_pressure_app/model/blood_pressure.dart';
+import 'package:blood_pressure_app/model/ram_only_implementations.dart';
+import 'package:blood_pressure_app/model/settings_store.dart';
+import 'package:blood_pressure_app/screens/statistics.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+import 'package:flutter_test/flutter_test.dart';
+import 'package:provider/provider.dart';
+
+void main() {
+  group("page should display data", () {
+    testWidgets('should load page', (widgetTester) async {
+      await _initStatsPage(widgetTester, []);
+      expect(find.text('Statistics'), findsOneWidget);
+    });
+    testWidgets("should report measurement count", (widgetTester) async {
+      await _initStatsPage(widgetTester, [
+        for (int i = 0; i<50; i++)
+          BloodPressureRecord(DateTime.fromMillisecondsSinceEpoch(i), 40+i, 60+i, 30+i, 'Test comment $i'),
+      ]);
+      final measurementCountWidget = find.byKey(const Key('measurementCount'));
+      expect(measurementCountWidget, findsOneWidget);
+      expect(find.descendant(of: measurementCountWidget, matching: find.text('50')), findsOneWidget);
+    });
+  });
+}
+
+Future<void> _initStatsPage(WidgetTester widgetTester, List<BloodPressureRecord> records) async {
+  final model = RamBloodPressureModel();
+  final settings = RamSettings();
+
+  for (var r in records) {
+    model.add(r);
+  }
+
+  await widgetTester.pumpWidget(MultiProvider(
+      providers: [
+        ChangeNotifierProvider<Settings>(create: (_) => settings),
+        ChangeNotifierProvider<BloodPressureModel>(create: (_) => model),
+      ],
+      child: Localizations(
+        delegates: AppLocalizations.localizationsDelegates,
+        locale: const Locale('en'),
+        child: const StatisticsPage(),
+      )
+  ));
+  await widgetTester.pumpAndSettle();
+}
\ No newline at end of file