Fix integration tests

This commit is contained in:
Roland Geider
2025-01-31 16:21:57 +01:00
parent 3e6ee0b082
commit bfcc793e1c
4 changed files with 41 additions and 35 deletions

View File

@@ -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<String, dynamic> 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();

View File

@@ -13,15 +13,16 @@ import '../test_data/routines.dart';
Widget createWorkoutDetailScreen({locale = 'en'}) {
final key = GlobalKey<NavigatorState>();
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<RoutinesProvider>(
create: (context) => mockWorkoutProvider,
create: (context) => mockRoutinesProvider,
),
],
child: MaterialApp(
@@ -34,7 +35,7 @@ Widget createWorkoutDetailScreen({locale = 'en'}) {
home: TextButton(
onPressed: () => key.currentState!.push(
MaterialPageRoute<void>(
settings: RouteSettings(arguments: workout),
settings: RouteSettings(arguments: routine.id),
builder: (_) => const RoutineScreen(),
),
),

View File

@@ -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<NavigatorState>();
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<RoutinesProvider>(
create: (context) => RoutinesProvider(
mockBaseProvider,
mockExerciseProvider,
[workout],
),
child: ChangeNotifierProvider<ExercisesProvider>(
create: (context) => mockExerciseProvider,
return riverpod.ProviderScope(
child: MultiProvider(
providers: [
ChangeNotifierProvider<RoutinesProvider>(
create: (context) => RoutinesProvider(
mockBaseProvider,
mockExerciseProvider,
[routine],
),
),
ChangeNotifierProvider<ExercisesProvider>(
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<void>(
settings: RouteSettings(arguments: workout.days.first),
settings: RouteSettings(
arguments: GymModeArguments(routine.id!, routine.days.first.id!, 1),
),
builder: (_) => const GymModeScreen(),
),
),

View File

@@ -20,7 +20,7 @@ enum DeviceType {
wearScreenshots
}
final destination = DeviceType.tenInchScreenshots.name;
final destination = DeviceType.phoneScreenshots.name;
Future<void> takeScreenshot(tester, binding, String language, String name) async {
if (Platform.isAndroid) {