Commit ea36107

derdilla <derdilla06@gmail.com>
2023-06-03 17:40:35
add widgets tests for navigation
1 parent 93aa2c5
test/ram_only_implementations.dart → lib/model/ram_only_implementations.dart
File renamed without changes
lib/screens/statistics.dart
@@ -234,25 +234,31 @@ class StatisticsRow extends StatelessWidget {
   Widget build(BuildContext context) {
     return Row(
       children: [
-        const Spacer(),
-        Statistic(
-          smallEdges: true,
-          caption: caption1,
-          child: child1,
+        const SizedBox(width: 20,),
+        Expanded(
+          child: Statistic(
+            smallEdges: true,
+            caption: caption1,
+            child: child1,
+          ),
         ),
-        const Spacer(),
-        Statistic(
-          smallEdges: true,
-          caption: caption2,
-          child: child2,
+        const SizedBox(width: 10,),
+        Expanded(
+          child: Statistic(
+            smallEdges: true,
+            caption: caption2,
+            child: child2,
+          ),
         ),
-        const Spacer(),
-        Statistic(
-          smallEdges: true,
-          caption: caption3,
-          child: child3,
+        const SizedBox(width: 10,),
+        Expanded(
+          child: Statistic(
+            smallEdges: true,
+            caption: caption3,
+            child: child3,
+          ),
         ),
-        const Spacer(),
+        const SizedBox(width: 20,),
       ],
     );
   }
test/model/bood_pressure_test.dart
@@ -2,7 +2,7 @@ import 'package:blood_pressure_app/model/blood_pressure.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:sqflite_common_ffi/sqflite_ffi.dart';
 
-import '../ram_only_implementations.dart';
+import 'package:blood_pressure_app/model/ram_only_implementations.dart';
 
 void main() {
   group('BloodPressureRecord', () {
test/model/settings_test.dart
@@ -3,7 +3,7 @@ import 'package:flutter_test/flutter_test.dart';
 import 'package:shared_preferences/shared_preferences.dart';
 import 'package:sqflite_common_ffi/sqflite_ffi.dart';
 
-import '../ram_only_implementations.dart';
+import 'package:blood_pressure_app/model/ram_only_implementations.dart';
 
 void main() {
   TestWidgetsFlutterBinding.ensureInitialized();
test/ui/navigation_test.dart
@@ -0,0 +1,58 @@
+import 'package:blood_pressure_app/main.dart';
+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/add_measurement.dart';
+import 'package:blood_pressure_app/screens/settings.dart';
+import 'package:blood_pressure_app/screens/statistics.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+import 'package:provider/provider.dart';
+
+import 'package:mockito/mockito.dart';
+
+class MockNavigatorObserver extends Mock implements NavigatorObserver {}
+
+void main() {
+  group('navigation', () {
+    testWidgets('should navigate to measurements page', (widgetTester) async {
+      await _pumpAppRoot(widgetTester);
+      expect(find.byIcon(Icons.add), findsOneWidget);
+      await widgetTester.tap(find.byIcon(Icons.add));
+      await widgetTester.pumpAndSettle();
+
+      expect(find.byType(AddMeasurementPage), findsOneWidget);
+    });
+    testWidgets('should navigate to settings page', (widgetTester) async {
+      await _pumpAppRoot(widgetTester);
+      expect(find.byIcon(Icons.settings), findsOneWidget);
+      await widgetTester.tap(find.byIcon(Icons.settings));
+      await widgetTester.pumpAndSettle();
+
+      expect(find.byType(SettingsPage), findsOneWidget);
+    });
+    testWidgets('should navigate to stats page', (widgetTester) async {
+      await _pumpAppRoot(widgetTester);
+      expect(find.byIcon(Icons.insights), findsOneWidget);
+      await widgetTester.tap(find.byIcon(Icons.insights));
+      await widgetTester.pumpAndSettle();
+
+      expect(find.byType(StatisticsPage), findsOneWidget);
+    });
+  });
+}
+
+Future<void> _pumpAppRoot(WidgetTester widgetTester) async {
+  final model = RamBloodPressureModel();
+  final settings = RamSettings();
+
+  await widgetTester.pumpWidget(
+      MultiProvider(
+          providers: [
+            ChangeNotifierProvider<Settings>(create: (_) => settings),
+            ChangeNotifierProvider<BloodPressureModel>(create: (_) => model),
+          ],
+          child: const AppRoot()
+      )
+  );
+}
\ No newline at end of file
pubspec.lock
@@ -1,6 +1,14 @@
 # Generated by pub
 # See https://dart.dev/tools/pub/glossary#lockfile
 packages:
+  _fe_analyzer_shared:
+    dependency: transitive
+    description:
+      name: _fe_analyzer_shared
+      sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a
+      url: "https://pub.dev"
+    source: hosted
+    version: "61.0.0"
   amdjs:
     dependency: transitive
     description:
@@ -9,6 +17,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "2.0.3"
+  analyzer:
+    dependency: transitive
+    description:
+      name: analyzer
+      sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562
+      url: "https://pub.dev"
+    source: hosted
+    version: "5.13.0"
   args:
     dependency: transitive
     description:
@@ -41,6 +57,30 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "2.1.1"
+  build:
+    dependency: transitive
+    description:
+      name: build
+      sha256: "43865b79fbb78532e4bff7c33087aa43b1d488c4fdef014eaef568af6d8016dc"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.4.0"
+  built_collection:
+    dependency: transitive
+    description:
+      name: built_collection
+      sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
+      url: "https://pub.dev"
+    source: hosted
+    version: "5.1.1"
+  built_value:
+    dependency: transitive
+    description:
+      name: built_value
+      sha256: "7dd62d9faf105c434f3d829bbe9c4be02ec67f5ed94832222116122df67c5452"
+      url: "https://pub.dev"
+    source: hosted
+    version: "8.6.0"
   characters:
     dependency: transitive
     description:
@@ -57,6 +97,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "1.1.1"
+  code_builder:
+    dependency: transitive
+    description:
+      name: code_builder
+      sha256: "4ad01d6e56db961d29661561effde45e519939fdaeb46c351275b182eac70189"
+      url: "https://pub.dev"
+    source: hosted
+    version: "4.5.0"
   collection:
     dependency: transitive
     description:
@@ -65,6 +113,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "1.17.1"
+  convert:
+    dependency: transitive
+    description:
+      name: convert
+      sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.1.1"
   cross_file:
     dependency: transitive
     description:
@@ -89,6 +145,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "5.0.2"
+  dart_style:
+    dependency: transitive
+    description:
+      name: dart_style
+      sha256: f4f1f73ab3fd2afcbcca165ee601fe980d966af6a21b5970c6c9376955c528ad
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.3.1"
   dom_tools:
     dependency: transitive
     description:
@@ -153,6 +217,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "0.2.2"
+  fixnum:
+    dependency: transitive
+    description:
+      name: fixnum
+      sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.0"
   fl_chart:
     dependency: "direct main"
     description:
@@ -200,6 +272,14 @@ packages:
     description: flutter
     source: sdk
     version: "0.0.0"
+  glob:
+    dependency: transitive
+    description:
+      name: glob
+      sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.2"
   http:
     dependency: transitive
     description:
@@ -248,6 +328,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "2.1.0"
+  logging:
+    dependency: transitive
+    description:
+      name: logging
+      sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.0"
   markdown:
     dependency: transitive
     description:
@@ -288,6 +376,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "1.0.4"
+  mockito:
+    dependency: "direct main"
+    description:
+      name: mockito
+      sha256: "8b46d7eb40abdda92d62edd01546051f0c27365e65608c284de336dccfef88cc"
+      url: "https://pub.dev"
+    source: hosted
+    version: "5.4.1"
   nested:
     dependency: transitive
     description:
@@ -296,6 +392,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "1.0.0"
+  package_config:
+    dependency: transitive
+    description:
+      name: package_config
+      sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.0"
   path:
     dependency: "direct main"
     description:
@@ -384,6 +488,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "6.0.5"
+  pub_semver:
+    dependency: transitive
+    description:
+      name: pub_semver
+      sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
+      url: "https://pub.dev"
+    source: hosted
+    version: "2.1.4"
   resource_portable:
     dependency: transitive
     description:
@@ -469,6 +581,14 @@ packages:
     description: flutter
     source: sdk
     version: "0.0.99"
+  source_gen:
+    dependency: transitive
+    description:
+      name: source_gen
+      sha256: "373f96cf5a8744bc9816c1ff41cf5391bbdbe3d7a96fe98c622b6738a8a7bd33"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.3.2"
   source_span:
     dependency: transitive
     description:
@@ -653,6 +773,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "2.1.4"
+  watcher:
+    dependency: transitive
+    description:
+      name: watcher
+      sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8"
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.1.0"
   win32:
     dependency: transitive
     description:
@@ -669,6 +797,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "1.0.0"
+  yaml:
+    dependency: transitive
+    description:
+      name: yaml
+      sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.1.2"
 sdks:
-  dart: ">=3.0.0-417 <3.0.2"
+  dart: ">=3.0.0 <3.0.2"
   flutter: ">=3.3.0"
pubspec.yaml
@@ -43,6 +43,7 @@ dependencies:
   csv: ^5.0.2  # MIT
   url_launcher: ^6.1.11  # BSD-3-Clause
   shared_preferences: ^2.1.1  # BSD-3-Clause
+  mockito: ^5.4.1
 
 dev_dependencies:
   flutter_test: