import 'package:flutter_test/flutter_test.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:zenxercise/src/app.dart'; import 'package:zenxercise/src/exercises/exercise.dart'; import 'package:zenxercise/src/exercises/exercise_library.dart'; import 'package:zenxercise/src/modes/mode.dart'; import 'package:zenxercise/src/settings/settings_controller.dart'; Exercise exercise(String id, Mode mode, {String? name, int imageCount = 0}) => Exercise( id: id, name: name ?? id.replaceAll('_', ' '), mode: mode, category: mode == Mode.stretching ? 'stretching' : 'strength', level: 'beginner', equipment: 'body only', primaryMuscles: const ['hamstrings'], secondaryMuscles: const [], instructions: const ['Breathe.'], imageCount: imageCount, ); final sampleLibrary = ExerciseLibrary([ exercise('Hamstring_Stretch', Mode.stretching), exercise('Calf_Stretch', Mode.stretching), exercise('Barbell_Squat', Mode.workout), ]); /// The whole app over [library], with preferences starting from [prefs]. Future pumpApp( WidgetTester tester, { ExerciseLibrary? library, Map prefs = const {}, }) async { SharedPreferences.setMockInitialValues(prefs); final settings = SettingsController(SettingsService()); await settings.loadSettings(); await tester.pumpWidget( MultiProvider( providers: [ ChangeNotifierProvider.value(value: settings), Provider.value(value: library ?? sampleLibrary), ], child: const ZenXerciseApp(), ), ); await tester.pumpAndSettle(); return settings; }