Files
ZenXercise/test/support/test_app.dart
T

49 lines
1.6 KiB
Dart
Raw Normal View History

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<SettingsController> pumpApp(
WidgetTester tester, {
ExerciseLibrary? library,
Map<String, Object> 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;
}