From bfcc793e1c10d2cc4183dfe78ec2fd08485723f7 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Fri, 31 Jan 2025 16:21:57 +0100 Subject: [PATCH] Fix integration tests --- integration_test/1_dashboard.dart | 23 ++++++------- integration_test/2_workout.dart | 13 +++---- integration_test/3_gym_mode.dart | 38 +++++++++++++-------- integration_test/make_screenshots_test.dart | 2 +- 4 files changed, 41 insertions(+), 35 deletions(-) diff --git a/integration_test/1_dashboard.dart b/integration_test/1_dashboard.dart index 00b8e942..3f8ec5ed 100644 --- a/integration_test/1_dashboard.dart +++ b/integration_test/1_dashboard.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:mockito/mockito.dart'; import 'package:provider/provider.dart'; +import 'package:wger/models/workouts/session.dart'; import 'package:wger/providers/body_weight.dart'; import 'package:wger/providers/measurement.dart'; import 'package:wger/providers/nutrition.dart'; @@ -26,19 +27,15 @@ Widget createDashboardScreen({locale = 'en'}) { when(mockWorkoutProvider.activeRoutine) .thenReturn(getTestRoutine(exercises: getScreenshotExercises())); - final Map logs = { - 'results': [ - { - 'id': 1, - 'workout': 1, - 'date': '2022-12-01', - 'impression': '3', - 'time_start': '17:00', - 'time_end': '19:00', - }, - ], - }; - when(mockWorkoutProvider.fetchSessionData()).thenAnswer((a) => Future.value(logs)); + when(mockWorkoutProvider.fetchSessionData()).thenAnswer((a) => Future.value([ + WorkoutSession( + routineId: 1, + date: DateTime.now().add(const Duration(days: -1)), + timeStart: const TimeOfDay(hour: 17, minute: 34), + timeEnd: const TimeOfDay(hour: 19, minute: 3), + impression: 3, + ), + ])); final mockNutritionProvider = weight.MockNutritionPlansProvider(); diff --git a/integration_test/2_workout.dart b/integration_test/2_workout.dart index 7111b8f6..262e03aa 100644 --- a/integration_test/2_workout.dart +++ b/integration_test/2_workout.dart @@ -13,15 +13,16 @@ import '../test_data/routines.dart'; Widget createWorkoutDetailScreen({locale = 'en'}) { final key = GlobalKey(); - final mockWorkoutProvider = MockRoutinesProvider(); - final workout = getTestRoutine(exercises: getScreenshotExercises()); - when(mockWorkoutProvider.activeRoutine).thenReturn(workout); - when(mockWorkoutProvider.fetchAndSetRoutineFull(1)).thenAnswer((_) => Future.value(workout)); + final mockRoutinesProvider = MockRoutinesProvider(); + final routine = getTestRoutine(exercises: getScreenshotExercises()); + // when(mockRoutinesProvider.activeRoutine).thenReturn(routine); + when(mockRoutinesProvider.findById(1)).thenReturn(routine); + // when(mockRoutinesProvider.fetchAndSetRoutineFull(1)).thenAnswer((_) => Future.value(routine)); return MultiProvider( providers: [ ChangeNotifierProvider( - create: (context) => mockWorkoutProvider, + create: (context) => mockRoutinesProvider, ), ], child: MaterialApp( @@ -34,7 +35,7 @@ Widget createWorkoutDetailScreen({locale = 'en'}) { home: TextButton( onPressed: () => key.currentState!.push( MaterialPageRoute( - settings: RouteSettings(arguments: workout), + settings: RouteSettings(arguments: routine.id), builder: (_) => const RoutineScreen(), ), ), diff --git a/integration_test/3_gym_mode.dart b/integration_test/3_gym_mode.dart index 3715d0fe..add6a4df 100644 --- a/integration_test/3_gym_mode.dart +++ b/integration_test/3_gym_mode.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart' as riverpod; import 'package:mockito/mockito.dart'; import 'package:provider/provider.dart'; import 'package:wger/providers/exercises.dart'; @@ -8,31 +9,36 @@ import 'package:wger/screens/gym_mode.dart'; import 'package:wger/screens/routine_screen.dart'; import 'package:wger/theme/theme.dart'; -import '../test/utils.dart'; import '../test/workout/gym_mode_screen_test.mocks.dart'; import '../test_data/exercises.dart'; import '../test_data/routines.dart'; Widget createGymModeScreen({locale = 'en'}) { final key = GlobalKey(); - final bases = getTestExercises(); - final workout = getTestRoutine(exercises: getScreenshotExercises()); - + final exercises = getTestExercises(); + final routine = getTestRoutine(exercises: getScreenshotExercises()); + final mockBaseProvider = MockWgerBaseProvider(); final mockExerciseProvider = MockExercisesProvider(); - when(mockExerciseProvider.findExerciseById(1)).thenReturn(bases[0]); // bench press - when(mockExerciseProvider.findExerciseById(6)).thenReturn(bases[5]); // side raises + when(mockExerciseProvider.findExerciseById(1)).thenReturn(exercises[0]); // bench press + when(mockExerciseProvider.findExerciseById(6)).thenReturn(exercises[5]); // side raises //when(mockExerciseProvider.findExerciseBaseById(2)).thenReturn(bases[1]); // crunches //when(mockExerciseProvider.findExerciseBaseById(3)).thenReturn(bases[2]); // dead lift - return ChangeNotifierProvider( - create: (context) => RoutinesProvider( - mockBaseProvider, - mockExerciseProvider, - [workout], - ), - child: ChangeNotifierProvider( - create: (context) => mockExerciseProvider, + return riverpod.ProviderScope( + child: MultiProvider( + providers: [ + ChangeNotifierProvider( + create: (context) => RoutinesProvider( + mockBaseProvider, + mockExerciseProvider, + [routine], + ), + ), + ChangeNotifierProvider( + create: (context) => mockExerciseProvider, + ), + ], child: MaterialApp( locale: Locale(locale), debugShowCheckedModeBanner: false, @@ -43,7 +49,9 @@ Widget createGymModeScreen({locale = 'en'}) { home: TextButton( onPressed: () => key.currentState!.push( MaterialPageRoute( - settings: RouteSettings(arguments: workout.days.first), + settings: RouteSettings( + arguments: GymModeArguments(routine.id!, routine.days.first.id!, 1), + ), builder: (_) => const GymModeScreen(), ), ), diff --git a/integration_test/make_screenshots_test.dart b/integration_test/make_screenshots_test.dart index 3d8c7f48..fcb4ad2c 100644 --- a/integration_test/make_screenshots_test.dart +++ b/integration_test/make_screenshots_test.dart @@ -20,7 +20,7 @@ enum DeviceType { wearScreenshots } -final destination = DeviceType.tenInchScreenshots.name; +final destination = DeviceType.phoneScreenshots.name; Future takeScreenshot(tester, binding, String language, String name) async { if (Platform.isAndroid) {