mirror of
https://github.com/wger-project/flutter.git
synced 2026-02-18 00:17:48 +01:00
Filter by exercise bases in overview
This commit is contained in:
@@ -19,7 +19,6 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
import 'package:wger/models/exercises/category.dart';
|
||||
import 'package:wger/models/exercises/comment.dart';
|
||||
import 'package:wger/models/exercises/equipment.dart';
|
||||
import 'package:wger/models/exercises/exercise.dart';
|
||||
import 'package:wger/models/exercises/image.dart';
|
||||
@@ -84,7 +83,6 @@ class ExerciseBase extends Equatable {
|
||||
List<Muscle>? musclesSecondary,
|
||||
List<Equipment>? equipment,
|
||||
List<ExerciseImage>? images,
|
||||
List<Comment>? tips,
|
||||
ExerciseCategory? category}) {
|
||||
this.images = images ?? [];
|
||||
this.equipment = equipment ?? [];
|
||||
@@ -92,10 +90,27 @@ class ExerciseBase extends Equatable {
|
||||
this.muscles = muscles ?? [];
|
||||
if (category != null) {
|
||||
this.category = category;
|
||||
this.categoryId = category.id;
|
||||
categoryId = category.id;
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns exercises for the given language
|
||||
///
|
||||
/// If no translation is found, English will be returned
|
||||
///
|
||||
/// TODO: don't hard code language code
|
||||
/// TODO: don't just return the first exercise (this won't be necessary anymore
|
||||
/// when we cleanup the database)
|
||||
Exercise getExercises(String language) {
|
||||
return exercises.firstWhere(
|
||||
(e) => e.language.shortName == language,
|
||||
orElse: () => exercises.firstWhere(
|
||||
(e) => e.language.shortName == 'en',
|
||||
orElse: () => exercises.first,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
ExerciseImage? get getMainImage {
|
||||
try {
|
||||
return images.firstWhere((image) => image.isMain);
|
||||
@@ -105,7 +120,7 @@ class ExerciseBase extends Equatable {
|
||||
}
|
||||
|
||||
set setCategory(ExerciseCategory category) {
|
||||
this.categoryId = category.id;
|
||||
categoryId = category.id;
|
||||
this.category = category;
|
||||
}
|
||||
|
||||
|
||||
@@ -58,12 +58,15 @@ class ExercisesProvider with ChangeNotifier {
|
||||
static const _languageUrlPath = 'language';
|
||||
|
||||
List<ExerciseBase> _exerciseBases = [];
|
||||
set exerciseBases(List<ExerciseBase> exercisesBases) {
|
||||
_exerciseBases = exercisesBases;
|
||||
}
|
||||
|
||||
List<ExerciseCategory> _categories = [];
|
||||
List<Muscle> _muscles = [];
|
||||
List<Equipment> _equipment = [];
|
||||
List<Language> _languages = [];
|
||||
List<Variation> _variations = [];
|
||||
|
||||
List<Exercise> _exercises = [];
|
||||
set exercises(List<Exercise> exercises) {
|
||||
_exercises = exercises;
|
||||
@@ -76,20 +79,17 @@ class ExercisesProvider with ChangeNotifier {
|
||||
await findByFilters();
|
||||
}
|
||||
|
||||
List<Exercise>? _filteredExercises = [];
|
||||
List<Exercise>? get filteredExercises => _filteredExercises;
|
||||
set filteredExercises(List<Exercise>? newFilteredExercises) {
|
||||
_filteredExercises = newFilteredExercises;
|
||||
List<ExerciseBase> _filteredExerciseBases = [];
|
||||
List<ExerciseBase> get filteredExerciseBases => _filteredExerciseBases;
|
||||
set filteredExerciseBases(List<ExerciseBase> newFilteredExercises) {
|
||||
_filteredExerciseBases = newFilteredExercises;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
List<Exercise>? getFilteredExercisesByLanguage(int languageId) {
|
||||
return _filteredExercises!.where((e) => e.languageId == languageId).toList();
|
||||
}
|
||||
|
||||
ExercisesProvider(this.baseProvider);
|
||||
|
||||
List<Exercise> get items => [..._exercises];
|
||||
List<ExerciseBase> get bases => [..._exerciseBases];
|
||||
List<ExerciseCategory> get categories => [..._categories];
|
||||
List<Muscle> get muscles => [..._muscles];
|
||||
List<Equipment> get equipment => [..._equipment];
|
||||
@@ -126,23 +126,26 @@ class ExercisesProvider with ChangeNotifier {
|
||||
Future<void> findByFilters() async {
|
||||
// Filters not initialized
|
||||
if (filters == null) {
|
||||
filteredExercises = [];
|
||||
filteredExerciseBases = [];
|
||||
return;
|
||||
}
|
||||
|
||||
// Filters are initialized and nothing is marked
|
||||
if (filters!.isNothingMarked && filters!.searchTerm.length <= 1) {
|
||||
filteredExercises = items;
|
||||
filteredExerciseBases = _exerciseBases;
|
||||
return;
|
||||
}
|
||||
|
||||
filteredExercises = null;
|
||||
filteredExerciseBases = [];
|
||||
|
||||
final filteredItems =
|
||||
filters!.searchTerm.length <= 1 ? items : await searchExercise(filters!.searchTerm);
|
||||
List<ExerciseBase> filteredItems = _exerciseBases;
|
||||
if (filters!.searchTerm.length > 1) {
|
||||
final exercises = await searchExercise(filters!.searchTerm);
|
||||
filteredItems = exercises.map((e) => e.base).toList();
|
||||
}
|
||||
|
||||
// Filter by exercise category and equipment (REPLACE WITH HTTP REQUEST)
|
||||
filteredExercises = filteredItems.where((exercise) {
|
||||
filteredExerciseBases = filteredItems.where((exercise) {
|
||||
final bool isInAnyCategory = filters!.exerciseCategories.selected.contains(exercise.category);
|
||||
|
||||
final bool doesContainAnyEquipment = filters!.equipment.selected.any(
|
||||
@@ -415,7 +418,7 @@ class ExercisesProvider with ChangeNotifier {
|
||||
/// to invalidate it as a result
|
||||
Future<void> checkExerciseCacheVersion() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
if (prefs.containsKey(PREFS_EXERCISE_CACHE_VERSION)) {
|
||||
if (false && prefs.containsKey(PREFS_EXERCISE_CACHE_VERSION)) {
|
||||
final cacheVersion = prefs.getInt(PREFS_EXERCISE_CACHE_VERSION);
|
||||
if (cacheVersion! != CACHE_VERSION) {
|
||||
prefs.remove(PREFS_EXERCISES);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:wger/models/exercises/exercise.dart';
|
||||
import 'package:wger/models/exercises/base.dart';
|
||||
import 'package:wger/providers/exercises.dart';
|
||||
import 'package:wger/widgets/core/app_bar.dart';
|
||||
import 'package:wger/widgets/exercises/filter_row.dart';
|
||||
@@ -21,7 +21,7 @@ class _ExercisesScreenState extends State<ExercisesScreen> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
//final size = MediaQuery.of(context).size;
|
||||
final exercisesList = Provider.of<ExercisesProvider>(context).filteredExercises;
|
||||
final exercisesList = Provider.of<ExercisesProvider>(context).filteredExerciseBases;
|
||||
|
||||
return Scaffold(
|
||||
appBar: WgerAppBar(AppLocalizations.of(context).exercises),
|
||||
@@ -37,7 +37,7 @@ class _ExercisesScreenState extends State<ExercisesScreen> {
|
||||
child: CircularProgressIndicator(),
|
||||
),
|
||||
)
|
||||
: _ExercisesList(exercisesList: exercisesList),
|
||||
: _ExercisesList(exerciseBaseList: exercisesList),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -54,10 +54,10 @@ class _ExercisesScreenState extends State<ExercisesScreen> {
|
||||
class _ExercisesList extends StatelessWidget {
|
||||
const _ExercisesList({
|
||||
Key? key,
|
||||
required this.exercisesList,
|
||||
required this.exerciseBaseList,
|
||||
}) : super(key: key);
|
||||
|
||||
final List<Exercise> exercisesList;
|
||||
final List<ExerciseBase> exerciseBaseList;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -68,17 +68,19 @@ class _ExercisesList extends StatelessWidget {
|
||||
thickness: 1,
|
||||
);
|
||||
},
|
||||
itemCount: exercisesList.length,
|
||||
itemCount: exerciseBaseList.length,
|
||||
itemBuilder: (context, index) {
|
||||
final exercise = exercisesList[index];
|
||||
return ExerciseListTile(exercise: exercise);
|
||||
final exercise = exerciseBaseList[index];
|
||||
return ExerciseListTile(
|
||||
exercise: exercise.getExercises(Localizations.localeOf(context).languageCode),
|
||||
);
|
||||
|
||||
/*
|
||||
return Container(
|
||||
height: size.height * 0.175,
|
||||
child: ExerciseListTile(exercise: exercise),
|
||||
);
|
||||
|
||||
*/
|
||||
*/
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@@ -49,7 +49,8 @@ class ExerciseListTile extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
trailing: Text(exercise.language.shortName),
|
||||
trailing:
|
||||
Text('${exercise.language.shortName} base: ${exercise.baseId}, exId: ${exercise.id}'),
|
||||
title: Text(
|
||||
exercise.name,
|
||||
//style: theme.textTheme.headline6,
|
||||
@@ -57,7 +58,7 @@ class ExerciseListTile extends StatelessWidget {
|
||||
maxLines: 2,
|
||||
),
|
||||
subtitle: Text(
|
||||
exercise.category.name,
|
||||
'${exercise.category.name} / ${exercise.equipment.map((e) => e.name).toList().join(', ')}',
|
||||
),
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, ExerciseDetailScreen.routeName, arguments: exercise);
|
||||
|
||||
@@ -1,71 +1,68 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:http/http.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:wger/exceptions/no_such_entry_exception.dart';
|
||||
import 'package:wger/models/exercises/category.dart';
|
||||
import 'package:wger/models/exercises/equipment.dart';
|
||||
import 'package:wger/models/exercises/exercise.dart';
|
||||
import 'package:wger/models/exercises/language.dart';
|
||||
import 'package:wger/models/exercises/muscle.dart';
|
||||
import 'package:wger/providers/exercises.dart';
|
||||
|
||||
import '../../test_data/exercises.dart' as data;
|
||||
import '../fixtures/fixture_reader.dart';
|
||||
import '../measurements/measurement_provider_test.mocks.dart';
|
||||
import '../../test_data/exercises.dart' as data;
|
||||
|
||||
main() {
|
||||
late MockWgerBaseProvider mockBaseProvider;
|
||||
late ExercisesProvider provider;
|
||||
|
||||
String categoryUrl = 'exercisecategory';
|
||||
String muscleUrl = 'muscle';
|
||||
String equipmentUrl = 'equipment';
|
||||
String languageUrl = 'language';
|
||||
String exerciseBaseUrl = 'exercise-base';
|
||||
String searchExerciseUrl = 'exercise/search';
|
||||
const String categoryUrl = 'exercisecategory';
|
||||
const String muscleUrl = 'muscle';
|
||||
const String equipmentUrl = 'equipment';
|
||||
const String languageUrl = 'language';
|
||||
const String searchExerciseUrl = 'exercise/search';
|
||||
|
||||
Uri tCategoryEntriesUri = Uri(
|
||||
final Uri tCategoryEntriesUri = Uri(
|
||||
scheme: 'http',
|
||||
host: 'localhost',
|
||||
path: 'api/v2/' + categoryUrl + '/',
|
||||
path: 'api/v2/$categoryUrl/',
|
||||
);
|
||||
|
||||
Uri tMuscleEntriesUri = Uri(
|
||||
final Uri tMuscleEntriesUri = Uri(
|
||||
scheme: 'http',
|
||||
host: 'localhost',
|
||||
path: 'api/v2/' + muscleUrl + '/',
|
||||
path: 'api/v2/$muscleUrl/',
|
||||
);
|
||||
|
||||
Uri tEquipmentEntriesUri = Uri(
|
||||
final Uri tEquipmentEntriesUri = Uri(
|
||||
scheme: 'http',
|
||||
host: 'localhost',
|
||||
path: 'api/v2/' + equipmentUrl + '/',
|
||||
path: 'api/v2/$equipmentUrl/',
|
||||
);
|
||||
|
||||
Uri tLanguageEntriesUri = Uri(
|
||||
final Uri tLanguageEntriesUri = Uri(
|
||||
scheme: 'http',
|
||||
host: 'localhost',
|
||||
path: 'api/v2/' + languageUrl + '/',
|
||||
path: 'api/v2/$languageUrl/',
|
||||
);
|
||||
|
||||
Uri tSearchByNameUri = Uri(
|
||||
final Uri tSearchByNameUri = Uri(
|
||||
scheme: 'http',
|
||||
host: 'localhost',
|
||||
path: 'api/v2/$searchExerciseUrl/',
|
||||
);
|
||||
|
||||
final category1 = ExerciseCategory(id: 1, name: 'Arms');
|
||||
final muscle1 = Muscle(id: 1, name: 'Biceps brachii', isFront: true);
|
||||
final equipment1 = Equipment(id: 1, name: 'Barbell');
|
||||
final language1 = Language(id: 1, shortName: 'de', fullName: 'Deutsch');
|
||||
const category1 = ExerciseCategory(id: 1, name: 'Arms');
|
||||
const muscle1 = Muscle(id: 1, name: 'Biceps brachii', isFront: true);
|
||||
const equipment1 = Equipment(id: 1, name: 'Barbell');
|
||||
const language1 = Language(id: 1, shortName: 'de', fullName: 'Deutsch');
|
||||
|
||||
Map<String, dynamic> tCategoryMap = jsonDecode(fixture('exercise_category_entries.json'));
|
||||
Map<String, dynamic> tMuscleMap = jsonDecode(fixture('exercise_muscles_entries.json'));
|
||||
Map<String, dynamic> tEquipmentMap = jsonDecode(fixture('exercise_equipment_entries.json'));
|
||||
Map<String, dynamic> tLanguageMap = jsonDecode(fixture('exercise_language_entries.json'));
|
||||
final Map<String, dynamic> tCategoryMap = jsonDecode(fixture('exercise_category_entries.json'));
|
||||
final Map<String, dynamic> tMuscleMap = jsonDecode(fixture('exercise_muscles_entries.json'));
|
||||
final Map<String, dynamic> tEquipmentMap = jsonDecode(fixture('exercise_equipment_entries.json'));
|
||||
final Map<String, dynamic> tLanguageMap = jsonDecode(fixture('exercise_language_entries.json'));
|
||||
|
||||
setUp(() {
|
||||
mockBaseProvider = MockWgerBaseProvider();
|
||||
@@ -171,7 +168,7 @@ main() {
|
||||
|
||||
// assert
|
||||
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
|
||||
expect(provider.filteredExercises, isEmpty);
|
||||
expect(provider.filteredExerciseBases, isEmpty);
|
||||
});
|
||||
|
||||
group('Filters are not null', () {
|
||||
@@ -184,28 +181,30 @@ main() {
|
||||
equipment: FilterCategory<Equipment>(title: 'Equipment', items: {}),
|
||||
);
|
||||
|
||||
provider.exercises = data.getExercise();
|
||||
provider.exercises = data.getTestExercises();
|
||||
provider.exerciseBases = data.getTestExerciseBases();
|
||||
});
|
||||
|
||||
test('Nothing is selected with no search term', () async {
|
||||
// arrange
|
||||
Filters currentFilters = filters;
|
||||
final Filters currentFilters = filters;
|
||||
|
||||
// act
|
||||
await provider.setFilters(currentFilters);
|
||||
|
||||
// assert
|
||||
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
|
||||
|
||||
expect(
|
||||
provider.filteredExercises,
|
||||
data.getExercise(),
|
||||
provider.filteredExerciseBases,
|
||||
data.getTestExerciseBases(),
|
||||
);
|
||||
});
|
||||
|
||||
test('A muscle is selected with no search term. Should find results', () async {
|
||||
// arrange
|
||||
Filters tFilters = filters.copyWith(
|
||||
exerciseCategories: filters.exerciseCategories.copyWith(items: {category1: true}),
|
||||
final Filters tFilters = filters.copyWith(
|
||||
exerciseCategories: filters.exerciseCategories.copyWith(items: {data.tCategory1: true}),
|
||||
);
|
||||
|
||||
// act
|
||||
@@ -213,13 +212,13 @@ main() {
|
||||
|
||||
// assert
|
||||
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
|
||||
expect(provider.filteredExercises, [data.getExercise()[0]]);
|
||||
expect(provider.filteredExerciseBases, [data.getTestExercises()[0].base]);
|
||||
});
|
||||
|
||||
test('A muscle is selected with no search term. Should not find results', () async {
|
||||
// arragne
|
||||
// arrange
|
||||
Filters tFilters = filters.copyWith(
|
||||
exerciseCategories: filters.exerciseCategories.copyWith(items: {data.category4: true}),
|
||||
exerciseCategories: filters.exerciseCategories.copyWith(items: {data.tCategory4: true}),
|
||||
);
|
||||
|
||||
// act
|
||||
@@ -227,13 +226,13 @@ main() {
|
||||
|
||||
// assert
|
||||
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
|
||||
expect(provider.filteredExercises, isEmpty);
|
||||
expect(provider.filteredExerciseBases, isEmpty);
|
||||
});
|
||||
|
||||
test('An equipment is selected with no search term. Should find results', () async {
|
||||
// arragne
|
||||
Filters tFilters = filters.copyWith(
|
||||
equipment: filters.equipment.copyWith(items: {data.equipment1: true}),
|
||||
// arrange
|
||||
final Filters tFilters = filters.copyWith(
|
||||
equipment: filters.equipment.copyWith(items: {data.tEquipment1: true}),
|
||||
);
|
||||
|
||||
// act
|
||||
@@ -241,13 +240,13 @@ main() {
|
||||
|
||||
// assert
|
||||
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
|
||||
expect(provider.filteredExercises, [data.getExercise()[0]]);
|
||||
expect(provider.filteredExerciseBases, [data.getTestExerciseBases()[0]]);
|
||||
});
|
||||
|
||||
test('An equipment is selected with no search term. Should not find results', () async {
|
||||
// arragne
|
||||
Filters tFilters = filters.copyWith(
|
||||
equipment: filters.equipment.copyWith(items: {data.equipment3: true}),
|
||||
// arrange
|
||||
final Filters tFilters = filters.copyWith(
|
||||
equipment: filters.equipment.copyWith(items: {data.tEquipment3: true}),
|
||||
);
|
||||
|
||||
// act
|
||||
@@ -255,14 +254,14 @@ main() {
|
||||
|
||||
// assert
|
||||
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
|
||||
expect(provider.filteredExercises, isEmpty);
|
||||
expect(provider.filteredExerciseBases, isEmpty);
|
||||
});
|
||||
|
||||
test('A muscle and equipment is selected and there is a match', () async {
|
||||
// arrange
|
||||
Filters tFilters = filters.copyWith(
|
||||
exerciseCategories: filters.exerciseCategories.copyWith(items: {data.category2: true}),
|
||||
equipment: filters.equipment.copyWith(items: {data.equipment2: true}),
|
||||
final Filters tFilters = filters.copyWith(
|
||||
exerciseCategories: filters.exerciseCategories.copyWith(items: {data.tCategory2: true}),
|
||||
equipment: filters.equipment.copyWith(items: {data.tEquipment2: true}),
|
||||
);
|
||||
|
||||
// act
|
||||
@@ -270,13 +269,13 @@ main() {
|
||||
|
||||
// assert
|
||||
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
|
||||
expect(provider.filteredExercises, [data.getExercise()[1]]);
|
||||
expect(provider.filteredExerciseBases, [data.getTestExerciseBases()[1]]);
|
||||
});
|
||||
|
||||
test('A muscle and equipment is selected but no match', () async {
|
||||
// arrange
|
||||
Filters tFilters = filters.copyWith(
|
||||
exerciseCategories: filters.exerciseCategories.copyWith(items: {data.category2: true}),
|
||||
final Filters tFilters = filters.copyWith(
|
||||
exerciseCategories: filters.exerciseCategories.copyWith(items: {data.tCategory2: true}),
|
||||
equipment: filters.equipment.copyWith(items: {equipment1: true}),
|
||||
);
|
||||
|
||||
@@ -285,14 +284,14 @@ main() {
|
||||
|
||||
// assert
|
||||
verifyNever(provider.baseProvider.fetch(tSearchByNameUri));
|
||||
expect(provider.filteredExercises, isEmpty);
|
||||
expect(provider.filteredExerciseBases, isEmpty);
|
||||
});
|
||||
|
||||
group('Search term', () {
|
||||
late Uri tSearchByNameUri;
|
||||
setUp(() {
|
||||
String tSearchTerm = 'press';
|
||||
String tSearchLanguage = 'en';
|
||||
final String tSearchTerm = 'press';
|
||||
final String tSearchLanguage = 'en';
|
||||
Map<String, dynamic> query = {'term': tSearchTerm, 'language': tSearchLanguage};
|
||||
tSearchByNameUri = Uri(
|
||||
scheme: 'http',
|
||||
@@ -300,7 +299,7 @@ main() {
|
||||
path: 'api/v2/$searchExerciseUrl/',
|
||||
queryParameters: query,
|
||||
);
|
||||
Map<String, dynamic> tSearchResponse =
|
||||
final Map<String, dynamic> tSearchResponse =
|
||||
jsonDecode(fixture('exercise_search_entries.json'));
|
||||
|
||||
// Mock exercise search
|
||||
@@ -315,20 +314,23 @@ main() {
|
||||
|
||||
test('Should find results from search term', () async {
|
||||
// arrange
|
||||
Filters tFilters = filters.copyWith(searchTerm: 'press');
|
||||
final Filters tFilters = filters.copyWith(searchTerm: 'press');
|
||||
|
||||
// act
|
||||
await provider.setFilters(tFilters);
|
||||
|
||||
// assert
|
||||
verify(provider.baseProvider.fetch(tSearchByNameUri)).called(1);
|
||||
expect(provider.filteredExercises, [data.getExercise()[0], data.getExercise()[1]]);
|
||||
expect(
|
||||
provider.filteredExerciseBases,
|
||||
[data.getTestExerciseBases()[0], data.getTestExerciseBases()[1]],
|
||||
);
|
||||
});
|
||||
test('Should find items from selection but should filter them by search term', () async {
|
||||
// arrange
|
||||
Filters tFilters = filters.copyWith(
|
||||
final Filters tFilters = filters.copyWith(
|
||||
searchTerm: 'press',
|
||||
exerciseCategories: filters.exerciseCategories.copyWith(items: {data.category3: true}),
|
||||
exerciseCategories: filters.exerciseCategories.copyWith(items: {data.tCategory3: true}),
|
||||
);
|
||||
|
||||
// act
|
||||
@@ -336,7 +338,7 @@ main() {
|
||||
|
||||
// assert
|
||||
verify(provider.baseProvider.fetch(tSearchByNameUri)).called(1);
|
||||
expect(provider.filteredExercises, isEmpty);
|
||||
expect(provider.filteredExerciseBases, isEmpty);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -38,7 +38,7 @@ void main() {
|
||||
supportedLocales: AppLocalizations.supportedLocales,
|
||||
navigatorKey: GlobalKey<NavigatorState>(),
|
||||
home: Scaffold(
|
||||
body: ExerciseDetail(getExercise()[0]),
|
||||
body: ExerciseDetail(getTestExercises()[0]),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Mocks generated by Mockito 5.0.15 from annotations
|
||||
// Mocks generated by Mockito 5.0.17 from annotations
|
||||
// in wger/test/gallery/gallery_screen_test.dart.
|
||||
// Do not manually edit this file.
|
||||
|
||||
@@ -19,6 +19,7 @@ import 'package:wger/providers/gallery.dart' as _i4;
|
||||
// ignore_for_file: invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: prefer_const_constructors
|
||||
// ignore_for_file: unnecessary_parenthesis
|
||||
// ignore_for_file: camel_case_types
|
||||
|
||||
class _FakeAuthProvider_0 extends _i1.Fake implements _i2.AuthProvider {}
|
||||
|
||||
@@ -115,8 +116,6 @@ class MockGalleryProvider extends _i1.Mock implements _i4.GalleryProvider {
|
||||
returnValue: Future<_i3.Response>.value(_FakeResponse_3()))
|
||||
as _i6.Future<_i3.Response>);
|
||||
@override
|
||||
String toString() => super.toString();
|
||||
@override
|
||||
void addListener(_i8.VoidCallback? listener) =>
|
||||
super.noSuchMethod(Invocation.method(#addListener, [listener]),
|
||||
returnValueForMissingStub: null);
|
||||
|
||||
@@ -23,13 +23,11 @@ import 'package:wger/providers/exercises.dart' as _i8;
|
||||
// ignore_for_file: prefer_const_constructors
|
||||
// ignore_for_file: unnecessary_parenthesis
|
||||
|
||||
class _FakeWgerBaseProvider_0 extends _i1.Fake implements _i2.WgerBaseProvider {
|
||||
}
|
||||
class _FakeWgerBaseProvider_0 extends _i1.Fake implements _i2.WgerBaseProvider {}
|
||||
|
||||
class _FakeExercise_1 extends _i1.Fake implements _i3.Exercise {}
|
||||
|
||||
class _FakeExerciseCategory_2 extends _i1.Fake implements _i4.ExerciseCategory {
|
||||
}
|
||||
class _FakeExerciseCategory_2 extends _i1.Fake implements _i4.ExerciseCategory {}
|
||||
|
||||
class _FakeEquipment_3 extends _i1.Fake implements _i5.Equipment {}
|
||||
|
||||
@@ -47,45 +45,43 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
|
||||
|
||||
@override
|
||||
_i2.WgerBaseProvider get baseProvider =>
|
||||
(super.noSuchMethod(Invocation.getter(#baseProvider),
|
||||
returnValue: _FakeWgerBaseProvider_0()) as _i2.WgerBaseProvider);
|
||||
(super.noSuchMethod(Invocation.getter(#baseProvider), returnValue: _FakeWgerBaseProvider_0())
|
||||
as _i2.WgerBaseProvider);
|
||||
@override
|
||||
set exercises(List<_i3.Exercise>? exercises) =>
|
||||
super.noSuchMethod(Invocation.setter(#exercises, exercises),
|
||||
super.noSuchMethod(Invocation.setter(#exercises, exercises), returnValueForMissingStub: null);
|
||||
@override
|
||||
set filteredExerciseBases(List<_i3.Exercise>? newfilteredExercises) =>
|
||||
super.noSuchMethod(Invocation.setter(#filteredExercises, newfilteredExercises),
|
||||
returnValueForMissingStub: null);
|
||||
@override
|
||||
set filteredExercises(List<_i3.Exercise>? newfilteredExercises) => super
|
||||
.noSuchMethod(Invocation.setter(#filteredExercises, newfilteredExercises),
|
||||
returnValueForMissingStub: null);
|
||||
@override
|
||||
List<_i3.Exercise> get items => (super.noSuchMethod(Invocation.getter(#items),
|
||||
returnValue: <_i3.Exercise>[]) as List<_i3.Exercise>);
|
||||
List<_i3.Exercise> get items =>
|
||||
(super.noSuchMethod(Invocation.getter(#items), returnValue: <_i3.Exercise>[])
|
||||
as List<_i3.Exercise>);
|
||||
@override
|
||||
List<_i4.ExerciseCategory> get categories =>
|
||||
(super.noSuchMethod(Invocation.getter(#categories),
|
||||
returnValue: <_i4.ExerciseCategory>[]) as List<_i4.ExerciseCategory>);
|
||||
(super.noSuchMethod(Invocation.getter(#categories), returnValue: <_i4.ExerciseCategory>[])
|
||||
as List<_i4.ExerciseCategory>);
|
||||
@override
|
||||
bool get hasListeners =>
|
||||
(super.noSuchMethod(Invocation.getter(#hasListeners), returnValue: false)
|
||||
as bool);
|
||||
(super.noSuchMethod(Invocation.getter(#hasListeners), returnValue: false) as bool);
|
||||
@override
|
||||
_i9.Future<void> setFilters(_i8.Filters? newFilters) =>
|
||||
(super.noSuchMethod(Invocation.method(#setFilters, [newFilters]),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
@override
|
||||
_i9.Future<void> findByFilters() =>
|
||||
(super.noSuchMethod(Invocation.method(#findByFilters, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
_i9.Future<void> findByFilters() => (super.noSuchMethod(Invocation.method(#findByFilters, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
@override
|
||||
List<_i3.Exercise> findByCategory(_i4.ExerciseCategory? category) =>
|
||||
(super.noSuchMethod(Invocation.method(#findByCategory, [category]),
|
||||
returnValue: <_i3.Exercise>[]) as List<_i3.Exercise>);
|
||||
@override
|
||||
_i3.Exercise findExerciseById(int? id) =>
|
||||
(super.noSuchMethod(Invocation.method(#findExerciseById, [id]),
|
||||
returnValue: _FakeExercise_1()) as _i3.Exercise);
|
||||
_i3.Exercise findExerciseById(int? id) => (super
|
||||
.noSuchMethod(Invocation.method(#findExerciseById, [id]), returnValue: _FakeExercise_1())
|
||||
as _i3.Exercise);
|
||||
@override
|
||||
_i4.ExerciseCategory findCategoryById(int? id) =>
|
||||
(super.noSuchMethod(Invocation.method(#findCategoryById, [id]),
|
||||
@@ -96,12 +92,12 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
|
||||
returnValue: _FakeEquipment_3()) as _i5.Equipment);
|
||||
@override
|
||||
_i6.Muscle findMuscleById(int? id) =>
|
||||
(super.noSuchMethod(Invocation.method(#findMuscleById, [id]),
|
||||
returnValue: _FakeMuscle_4()) as _i6.Muscle);
|
||||
(super.noSuchMethod(Invocation.method(#findMuscleById, [id]), returnValue: _FakeMuscle_4())
|
||||
as _i6.Muscle);
|
||||
@override
|
||||
_i7.Language findLanguageById(int? id) =>
|
||||
(super.noSuchMethod(Invocation.method(#findLanguageById, [id]),
|
||||
returnValue: _FakeLanguage_5()) as _i7.Language);
|
||||
_i7.Language findLanguageById(int? id) => (super
|
||||
.noSuchMethod(Invocation.method(#findLanguageById, [id]), returnValue: _FakeLanguage_5())
|
||||
as _i7.Language);
|
||||
@override
|
||||
_i9.Future<void> fetchAndSetCategories() =>
|
||||
(super.noSuchMethod(Invocation.method(#fetchAndSetCategories, []),
|
||||
@@ -130,23 +126,19 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
|
||||
@override
|
||||
_i9.Future<_i3.Exercise> fetchAndSetExercise(int? exerciseId) =>
|
||||
(super.noSuchMethod(Invocation.method(#fetchAndSetExercise, [exerciseId]),
|
||||
returnValue: Future<_i3.Exercise>.value(_FakeExercise_1()))
|
||||
as _i9.Future<_i3.Exercise>);
|
||||
returnValue: Future<_i3.Exercise>.value(_FakeExercise_1())) as _i9.Future<_i3.Exercise>);
|
||||
@override
|
||||
List<_i10.ExerciseBase> mapImages(
|
||||
dynamic data, List<_i10.ExerciseBase>? bases) =>
|
||||
List<_i10.ExerciseBase> mapImages(dynamic data, List<_i10.ExerciseBase>? bases) =>
|
||||
(super.noSuchMethod(Invocation.method(#mapImages, [data, bases]),
|
||||
returnValue: <_i10.ExerciseBase>[]) as List<_i10.ExerciseBase>);
|
||||
@override
|
||||
List<_i10.ExerciseBase> setBaseData(
|
||||
dynamic data, List<_i3.Exercise>? exercises) =>
|
||||
List<_i10.ExerciseBase> setBaseData(dynamic data, List<_i3.Exercise>? exercises) =>
|
||||
(super.noSuchMethod(Invocation.method(#setBaseData, [data, exercises]),
|
||||
returnValue: <_i10.ExerciseBase>[]) as List<_i10.ExerciseBase>);
|
||||
@override
|
||||
List<dynamic> mapBases(
|
||||
List<_i10.ExerciseBase>? bases, List<_i3.Exercise>? exercises) =>
|
||||
(super.noSuchMethod(Invocation.method(#mapBases, [bases, exercises]),
|
||||
returnValue: <dynamic>[]) as List<dynamic>);
|
||||
List<dynamic> mapBases(List<_i10.ExerciseBase>? bases, List<_i3.Exercise>? exercises) => (super
|
||||
.noSuchMethod(Invocation.method(#mapBases, [bases, exercises]), returnValue: <dynamic>[])
|
||||
as List<dynamic>);
|
||||
@override
|
||||
List<_i3.Exercise> mapLanguages(List<_i3.Exercise>? exercises) =>
|
||||
(super.noSuchMethod(Invocation.method(#mapLanguages, [exercises]),
|
||||
@@ -170,27 +162,23 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
@override
|
||||
_i9.Future<List<_i3.Exercise>> searchExercise(String? name,
|
||||
[String? languageCode = r'en']) =>
|
||||
(super.noSuchMethod(
|
||||
Invocation.method(#searchExercise, [name, languageCode]),
|
||||
_i9.Future<List<_i3.Exercise>> searchExercise(String? name, [String? languageCode = r'en']) =>
|
||||
(super.noSuchMethod(Invocation.method(#searchExercise, [name, languageCode]),
|
||||
returnValue: Future<List<_i3.Exercise>>.value(<_i3.Exercise>[]))
|
||||
as _i9.Future<List<_i3.Exercise>>);
|
||||
@override
|
||||
String toString() => super.toString();
|
||||
@override
|
||||
void addListener(_i11.VoidCallback? listener) =>
|
||||
super.noSuchMethod(Invocation.method(#addListener, [listener]),
|
||||
returnValueForMissingStub: null);
|
||||
void addListener(_i11.VoidCallback? listener) => super
|
||||
.noSuchMethod(Invocation.method(#addListener, [listener]), returnValueForMissingStub: null);
|
||||
@override
|
||||
void removeListener(_i11.VoidCallback? listener) =>
|
||||
super.noSuchMethod(Invocation.method(#removeListener, [listener]),
|
||||
returnValueForMissingStub: null);
|
||||
@override
|
||||
void dispose() => super.noSuchMethod(Invocation.method(#dispose, []),
|
||||
returnValueForMissingStub: null);
|
||||
void dispose() =>
|
||||
super.noSuchMethod(Invocation.method(#dispose, []), returnValueForMissingStub: null);
|
||||
@override
|
||||
void notifyListeners() =>
|
||||
super.noSuchMethod(Invocation.method(#notifyListeners, []),
|
||||
returnValueForMissingStub: null);
|
||||
super.noSuchMethod(Invocation.method(#notifyListeners, []), returnValueForMissingStub: null);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Mocks generated by Mockito 5.0.15 from annotations
|
||||
// Mocks generated by Mockito 5.0.17 from annotations
|
||||
// in wger/test/measurements/measurement_categories_screen_test.dart.
|
||||
// Do not manually edit this file.
|
||||
|
||||
@@ -18,6 +18,7 @@ import 'package:wger/providers/measurement.dart' as _i4;
|
||||
// ignore_for_file: invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: prefer_const_constructors
|
||||
// ignore_for_file: unnecessary_parenthesis
|
||||
// ignore_for_file: camel_case_types
|
||||
|
||||
class _FakeWgerBaseProvider_0 extends _i1.Fake implements _i2.WgerBaseProvider {
|
||||
}
|
||||
@@ -104,8 +105,6 @@ class MockMeasurementProvider extends _i1.Mock
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i5.Future<void>);
|
||||
@override
|
||||
String toString() => super.toString();
|
||||
@override
|
||||
void addListener(_i7.VoidCallback? listener) =>
|
||||
super.noSuchMethod(Invocation.method(#addListener, [listener]),
|
||||
returnValueForMissingStub: null);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Mocks generated by Mockito 5.0.15 from annotations
|
||||
// Mocks generated by Mockito 5.0.17 from annotations
|
||||
// in wger/test/measurements/measurement_provider_test.dart.
|
||||
// Do not manually edit this file.
|
||||
|
||||
@@ -16,6 +16,7 @@ import 'package:wger/providers/base_provider.dart' as _i4;
|
||||
// ignore_for_file: invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: prefer_const_constructors
|
||||
// ignore_for_file: unnecessary_parenthesis
|
||||
// ignore_for_file: camel_case_types
|
||||
|
||||
class _FakeAuthProvider_0 extends _i1.Fake implements _i2.AuthProvider {}
|
||||
|
||||
@@ -77,6 +78,4 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
|
||||
(super.noSuchMethod(Invocation.method(#deleteRequest, [url, id]),
|
||||
returnValue: Future<_i3.Response>.value(_FakeResponse_3()))
|
||||
as _i5.Future<_i3.Response>);
|
||||
@override
|
||||
String toString() => super.toString();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Mocks generated by Mockito 5.0.15 from annotations
|
||||
// Mocks generated by Mockito 5.0.17 from annotations
|
||||
// in wger/test/nutrition/nutritional_plan_form_test.dart.
|
||||
// Do not manually edit this file.
|
||||
|
||||
@@ -21,6 +21,7 @@ import 'package:wger/providers/nutrition.dart' as _i8;
|
||||
// ignore_for_file: invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: prefer_const_constructors
|
||||
// ignore_for_file: unnecessary_parenthesis
|
||||
// ignore_for_file: camel_case_types
|
||||
|
||||
class _FakeAuthProvider_0 extends _i1.Fake implements _i2.AuthProvider {}
|
||||
|
||||
@@ -213,8 +214,6 @@ class MockNutritionPlansProvider extends _i1.Mock
|
||||
returnValue: Future<_i3.Response>.value(_FakeResponse_7()))
|
||||
as _i9.Future<_i3.Response>);
|
||||
@override
|
||||
String toString() => super.toString();
|
||||
@override
|
||||
void addListener(_i10.VoidCallback? listener) =>
|
||||
super.noSuchMethod(Invocation.method(#addListener, [listener]),
|
||||
returnValueForMissingStub: null);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Mocks generated by Mockito 5.0.15 from annotations
|
||||
// Mocks generated by Mockito 5.0.17 from annotations
|
||||
// in wger/test/other/base_provider_test.dart.
|
||||
// Do not manually edit this file.
|
||||
|
||||
@@ -19,6 +19,7 @@ import 'package:mockito/mockito.dart' as _i1;
|
||||
// ignore_for_file: invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: prefer_const_constructors
|
||||
// ignore_for_file: unnecessary_parenthesis
|
||||
// ignore_for_file: camel_case_types
|
||||
|
||||
class _FakeResponse_0 extends _i1.Fake implements _i2.Response {}
|
||||
|
||||
@@ -103,6 +104,4 @@ class MockClient extends _i1.Mock implements _i4.Client {
|
||||
@override
|
||||
void close() => super.noSuchMethod(Invocation.method(#close, []),
|
||||
returnValueForMissingStub: null);
|
||||
@override
|
||||
String toString() => super.toString();
|
||||
}
|
||||
|
||||
@@ -45,9 +45,9 @@ void main() {
|
||||
final mockExerciseProvider = MockExercisesProvider();
|
||||
final WorkoutPlan workoutPlan = getWorkout();
|
||||
|
||||
when(mockExerciseProvider.findExerciseById(1)).thenReturn(getExercise()[0]);
|
||||
when(mockExerciseProvider.findExerciseById(2)).thenReturn(getExercise()[1]);
|
||||
when(mockExerciseProvider.findExerciseById(3)).thenReturn(getExercise()[2]);
|
||||
when(mockExerciseProvider.findExerciseById(1)).thenReturn(getTestExercises()[0]);
|
||||
when(mockExerciseProvider.findExerciseById(2)).thenReturn(getTestExercises()[1]);
|
||||
when(mockExerciseProvider.findExerciseById(3)).thenReturn(getTestExercises()[2]);
|
||||
|
||||
return ChangeNotifierProvider<WorkoutPlansProvider>(
|
||||
create: (context) => WorkoutPlansProvider(
|
||||
@@ -144,7 +144,7 @@ void main() {
|
||||
//
|
||||
// Pause
|
||||
//
|
||||
expect(find.text('0:00'), findsOneWidget);
|
||||
expect(find.text('0:01'), findsOneWidget);
|
||||
expect(find.byType(TimerWidget), findsOneWidget);
|
||||
expect(find.byIcon(Icons.close), findsOneWidget);
|
||||
expect(find.byIcon(Icons.menu), findsOneWidget);
|
||||
@@ -165,7 +165,7 @@ void main() {
|
||||
//
|
||||
// Pause
|
||||
//
|
||||
expect(find.text('0:00'), findsOneWidget);
|
||||
expect(find.text('0:01'), findsOneWidget);
|
||||
expect(find.byType(TimerWidget), findsOneWidget);
|
||||
expect(find.byIcon(Icons.chevron_left), findsOneWidget);
|
||||
expect(find.byIcon(Icons.close), findsOneWidget);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Mocks generated by Mockito 5.0.15 from annotations
|
||||
// Mocks generated by Mockito 5.0.17 from annotations
|
||||
// in wger/test/workout/workout_form_test.dart.
|
||||
// Do not manually edit this file.
|
||||
|
||||
@@ -26,6 +26,7 @@ import 'package:wger/providers/workout_plans.dart' as _i12;
|
||||
// ignore_for_file: invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: prefer_const_constructors
|
||||
// ignore_for_file: unnecessary_parenthesis
|
||||
// ignore_for_file: camel_case_types
|
||||
|
||||
class _FakeWeightUnit_0 extends _i1.Fake implements _i2.WeightUnit {}
|
||||
|
||||
@@ -281,8 +282,6 @@ class MockWorkoutPlansProvider extends _i1.Mock
|
||||
returnValue: Future<_i5.Response>.value(_FakeResponse_11()))
|
||||
as _i13.Future<_i5.Response>);
|
||||
@override
|
||||
String toString() => super.toString();
|
||||
@override
|
||||
void addListener(_i15.VoidCallback? listener) =>
|
||||
super.noSuchMethod(Invocation.method(#addListener, [listener]),
|
||||
returnValueForMissingStub: null);
|
||||
|
||||
@@ -27,16 +27,16 @@ void main() {
|
||||
final workout = getWorkout();
|
||||
|
||||
expect(workout.logs.length, 3);
|
||||
final logExercise1 = workout.filterLogsByExercise(getExercise()[0]);
|
||||
final logExercise1 = workout.filterLogsByExercise(getTestExercises()[0]);
|
||||
expect(logExercise1.length, 2);
|
||||
expect(logExercise1[0].id, 1);
|
||||
expect(logExercise1[1].id, 2);
|
||||
|
||||
final logExercise2 = workout.filterLogsByExercise(getExercise()[1]);
|
||||
final logExercise2 = workout.filterLogsByExercise(getTestExercises()[1]);
|
||||
expect(logExercise2.length, 1);
|
||||
expect(logExercise2[0].id, 3);
|
||||
|
||||
expect(workout.filterLogsByExercise(getExercise()[2]).length, 0);
|
||||
expect(workout.filterLogsByExercise(getTestExercises()[2]).length, 0);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// Mocks generated by Mockito 5.0.15 from annotations
|
||||
// Mocks generated by Mockito 5.0.17 from annotations
|
||||
// in wger/test/workout/workout_set_form_test.dart.
|
||||
// Do not manually edit this file.
|
||||
|
||||
import 'dart:async' as _i9;
|
||||
import 'dart:async' as _i10;
|
||||
import 'dart:ui' as _i11;
|
||||
|
||||
import 'package:mockito/mockito.dart' as _i1;
|
||||
import 'package:wger/models/exercises/base.dart' as _i10;
|
||||
import 'package:wger/models/exercises/base.dart' as _i9;
|
||||
import 'package:wger/models/exercises/category.dart' as _i4;
|
||||
import 'package:wger/models/exercises/equipment.dart' as _i5;
|
||||
import 'package:wger/models/exercises/exercise.dart' as _i3;
|
||||
@@ -22,14 +22,13 @@ import 'package:wger/providers/exercises.dart' as _i8;
|
||||
// ignore_for_file: invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: prefer_const_constructors
|
||||
// ignore_for_file: unnecessary_parenthesis
|
||||
// ignore_for_file: camel_case_types
|
||||
|
||||
class _FakeWgerBaseProvider_0 extends _i1.Fake implements _i2.WgerBaseProvider {
|
||||
}
|
||||
class _FakeWgerBaseProvider_0 extends _i1.Fake implements _i2.WgerBaseProvider {}
|
||||
|
||||
class _FakeExercise_1 extends _i1.Fake implements _i3.Exercise {}
|
||||
|
||||
class _FakeExerciseCategory_2 extends _i1.Fake implements _i4.ExerciseCategory {
|
||||
}
|
||||
class _FakeExerciseCategory_2 extends _i1.Fake implements _i4.ExerciseCategory {}
|
||||
|
||||
class _FakeEquipment_3 extends _i1.Fake implements _i5.Equipment {}
|
||||
|
||||
@@ -47,48 +46,77 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
|
||||
|
||||
@override
|
||||
_i2.WgerBaseProvider get baseProvider =>
|
||||
(super.noSuchMethod(Invocation.getter(#baseProvider),
|
||||
returnValue: _FakeWgerBaseProvider_0()) as _i2.WgerBaseProvider);
|
||||
(super.noSuchMethod(Invocation.getter(#baseProvider), returnValue: _FakeWgerBaseProvider_0())
|
||||
as _i2.WgerBaseProvider);
|
||||
@override
|
||||
set exerciseBases(List<_i9.ExerciseBase>? exercisesBases) =>
|
||||
super.noSuchMethod(Invocation.setter(#exerciseBases, exercisesBases),
|
||||
returnValueForMissingStub: null);
|
||||
@override
|
||||
set exercises(List<_i3.Exercise>? exercises) =>
|
||||
super.noSuchMethod(Invocation.setter(#exercises, exercises),
|
||||
super.noSuchMethod(Invocation.setter(#exercises, exercises), returnValueForMissingStub: null);
|
||||
@override
|
||||
List<_i9.ExerciseBase> get filteredExerciseBases =>
|
||||
(super.noSuchMethod(Invocation.getter(#filteredExercises), returnValue: <_i9.ExerciseBase>[])
|
||||
as List<_i9.ExerciseBase>);
|
||||
@override
|
||||
set filteredExerciseBases(List<_i9.ExerciseBase>? newFilteredExercises) =>
|
||||
super.noSuchMethod(Invocation.setter(#filteredExercises, newFilteredExercises),
|
||||
returnValueForMissingStub: null);
|
||||
@override
|
||||
set filteredExercises(List<_i3.Exercise>? newfilteredExercises) => super
|
||||
.noSuchMethod(Invocation.setter(#filteredExercises, newfilteredExercises),
|
||||
returnValueForMissingStub: null);
|
||||
List<_i3.Exercise> get items =>
|
||||
(super.noSuchMethod(Invocation.getter(#items), returnValue: <_i3.Exercise>[])
|
||||
as List<_i3.Exercise>);
|
||||
@override
|
||||
List<_i3.Exercise> get items => (super.noSuchMethod(Invocation.getter(#items),
|
||||
returnValue: <_i3.Exercise>[]) as List<_i3.Exercise>);
|
||||
List<_i9.ExerciseBase> get bases =>
|
||||
(super.noSuchMethod(Invocation.getter(#bases), returnValue: <_i9.ExerciseBase>[])
|
||||
as List<_i9.ExerciseBase>);
|
||||
@override
|
||||
List<_i4.ExerciseCategory> get categories =>
|
||||
(super.noSuchMethod(Invocation.getter(#categories),
|
||||
returnValue: <_i4.ExerciseCategory>[]) as List<_i4.ExerciseCategory>);
|
||||
(super.noSuchMethod(Invocation.getter(#categories), returnValue: <_i4.ExerciseCategory>[])
|
||||
as List<_i4.ExerciseCategory>);
|
||||
@override
|
||||
List<_i6.Muscle> get muscles =>
|
||||
(super.noSuchMethod(Invocation.getter(#muscles), returnValue: <_i6.Muscle>[])
|
||||
as List<_i6.Muscle>);
|
||||
@override
|
||||
List<_i5.Equipment> get equipment =>
|
||||
(super.noSuchMethod(Invocation.getter(#equipment), returnValue: <_i5.Equipment>[])
|
||||
as List<_i5.Equipment>);
|
||||
@override
|
||||
List<_i7.Language> get languages =>
|
||||
(super.noSuchMethod(Invocation.getter(#languages), returnValue: <_i7.Language>[])
|
||||
as List<_i7.Language>);
|
||||
@override
|
||||
bool get hasListeners =>
|
||||
(super.noSuchMethod(Invocation.getter(#hasListeners), returnValue: false)
|
||||
as bool);
|
||||
(super.noSuchMethod(Invocation.getter(#hasListeners), returnValue: false) as bool);
|
||||
@override
|
||||
_i9.Future<void> setFilters(_i8.Filters? newFilters) =>
|
||||
_i10.Future<void> setFilters(_i8.Filters? newFilters) =>
|
||||
(super.noSuchMethod(Invocation.method(#setFilters, [newFilters]),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
returnValueForMissingStub: Future<void>.value()) as _i10.Future<void>);
|
||||
@override
|
||||
_i9.Future<void> findByFilters() =>
|
||||
(super.noSuchMethod(Invocation.method(#findByFilters, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
_i10.Future<void> findByFilters() => (super.noSuchMethod(Invocation.method(#findByFilters, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i10.Future<void>);
|
||||
@override
|
||||
void clear() => super.noSuchMethod(Invocation.method(#clear, []),
|
||||
returnValueForMissingStub: null);
|
||||
void clear() =>
|
||||
super.noSuchMethod(Invocation.method(#clear, []), returnValueForMissingStub: null);
|
||||
@override
|
||||
List<_i3.Exercise> findByCategory(_i4.ExerciseCategory? category) =>
|
||||
(super.noSuchMethod(Invocation.method(#findByCategory, [category]),
|
||||
returnValue: <_i3.Exercise>[]) as List<_i3.Exercise>);
|
||||
@override
|
||||
_i3.Exercise findExerciseById(int? id) =>
|
||||
(super.noSuchMethod(Invocation.method(#findExerciseById, [id]),
|
||||
returnValue: _FakeExercise_1()) as _i3.Exercise);
|
||||
_i3.Exercise findExerciseById(int? id) => (super
|
||||
.noSuchMethod(Invocation.method(#findExerciseById, [id]), returnValue: _FakeExercise_1())
|
||||
as _i3.Exercise);
|
||||
@override
|
||||
List<_i3.Exercise> findExercisesByVariationId(int? id,
|
||||
{int? exerciseIdToExclude, int? languageId}) =>
|
||||
(super.noSuchMethod(
|
||||
Invocation.method(#findExercisesByVariationId, [id],
|
||||
{#exerciseIdToExclude: exerciseIdToExclude, #languageId: languageId}),
|
||||
returnValue: <_i3.Exercise>[]) as List<_i3.Exercise>);
|
||||
@override
|
||||
_i4.ExerciseCategory findCategoryById(int? id) =>
|
||||
(super.noSuchMethod(Invocation.method(#findCategoryById, [id]),
|
||||
@@ -99,57 +127,53 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
|
||||
returnValue: _FakeEquipment_3()) as _i5.Equipment);
|
||||
@override
|
||||
_i6.Muscle findMuscleById(int? id) =>
|
||||
(super.noSuchMethod(Invocation.method(#findMuscleById, [id]),
|
||||
returnValue: _FakeMuscle_4()) as _i6.Muscle);
|
||||
(super.noSuchMethod(Invocation.method(#findMuscleById, [id]), returnValue: _FakeMuscle_4())
|
||||
as _i6.Muscle);
|
||||
@override
|
||||
_i7.Language findLanguageById(int? id) =>
|
||||
(super.noSuchMethod(Invocation.method(#findLanguageById, [id]),
|
||||
returnValue: _FakeLanguage_5()) as _i7.Language);
|
||||
_i7.Language findLanguageById(int? id) => (super
|
||||
.noSuchMethod(Invocation.method(#findLanguageById, [id]), returnValue: _FakeLanguage_5())
|
||||
as _i7.Language);
|
||||
@override
|
||||
_i9.Future<void> fetchAndSetCategories() =>
|
||||
_i10.Future<void> fetchAndSetCategories() =>
|
||||
(super.noSuchMethod(Invocation.method(#fetchAndSetCategories, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
returnValueForMissingStub: Future<void>.value()) as _i10.Future<void>);
|
||||
@override
|
||||
_i9.Future<void> fetchAndSetVariations() =>
|
||||
_i10.Future<void> fetchAndSetVariations() =>
|
||||
(super.noSuchMethod(Invocation.method(#fetchAndSetVariations, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
returnValueForMissingStub: Future<void>.value()) as _i10.Future<void>);
|
||||
@override
|
||||
_i9.Future<void> fetchAndSetMuscles() =>
|
||||
_i10.Future<void> fetchAndSetMuscles() =>
|
||||
(super.noSuchMethod(Invocation.method(#fetchAndSetMuscles, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
returnValueForMissingStub: Future<void>.value()) as _i10.Future<void>);
|
||||
@override
|
||||
_i9.Future<void> fetchAndSetEquipment() =>
|
||||
_i10.Future<void> fetchAndSetEquipment() =>
|
||||
(super.noSuchMethod(Invocation.method(#fetchAndSetEquipment, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
returnValueForMissingStub: Future<void>.value()) as _i10.Future<void>);
|
||||
@override
|
||||
_i9.Future<void> fetchAndSetLanguages() =>
|
||||
_i10.Future<void> fetchAndSetLanguages() =>
|
||||
(super.noSuchMethod(Invocation.method(#fetchAndSetLanguages, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
returnValueForMissingStub: Future<void>.value()) as _i10.Future<void>);
|
||||
@override
|
||||
_i9.Future<_i3.Exercise> fetchAndSetExercise(int? exerciseId) =>
|
||||
_i10.Future<_i3.Exercise> fetchAndSetExercise(int? exerciseId) =>
|
||||
(super.noSuchMethod(Invocation.method(#fetchAndSetExercise, [exerciseId]),
|
||||
returnValue: Future<_i3.Exercise>.value(_FakeExercise_1()))
|
||||
as _i9.Future<_i3.Exercise>);
|
||||
returnValue: Future<_i3.Exercise>.value(_FakeExercise_1())) as _i10.Future<_i3.Exercise>);
|
||||
@override
|
||||
List<_i10.ExerciseBase> mapImages(
|
||||
dynamic data, List<_i10.ExerciseBase>? bases) =>
|
||||
List<_i9.ExerciseBase> mapImages(dynamic data, List<_i9.ExerciseBase>? bases) =>
|
||||
(super.noSuchMethod(Invocation.method(#mapImages, [data, bases]),
|
||||
returnValue: <_i10.ExerciseBase>[]) as List<_i10.ExerciseBase>);
|
||||
returnValue: <_i9.ExerciseBase>[]) as List<_i9.ExerciseBase>);
|
||||
@override
|
||||
List<_i10.ExerciseBase> setBaseData(
|
||||
dynamic data, List<_i3.Exercise>? exercises) =>
|
||||
List<_i9.ExerciseBase> setBaseData(dynamic data, List<_i3.Exercise>? exercises) =>
|
||||
(super.noSuchMethod(Invocation.method(#setBaseData, [data, exercises]),
|
||||
returnValue: <_i10.ExerciseBase>[]) as List<_i10.ExerciseBase>);
|
||||
returnValue: <_i9.ExerciseBase>[]) as List<_i9.ExerciseBase>);
|
||||
@override
|
||||
List<dynamic> mapBases(
|
||||
List<_i10.ExerciseBase>? bases, List<_i3.Exercise>? exercises) =>
|
||||
(super.noSuchMethod(Invocation.method(#mapBases, [bases, exercises]),
|
||||
returnValue: <dynamic>[]) as List<dynamic>);
|
||||
List<dynamic> mapBases(List<_i9.ExerciseBase>? bases, List<_i3.Exercise>? exercises) => (super
|
||||
.noSuchMethod(Invocation.method(#mapBases, [bases, exercises]), returnValue: <dynamic>[])
|
||||
as List<dynamic>);
|
||||
@override
|
||||
List<_i3.Exercise> mapLanguages(List<_i3.Exercise>? exercises) =>
|
||||
(super.noSuchMethod(Invocation.method(#mapLanguages, [exercises]),
|
||||
@@ -163,37 +187,31 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider {
|
||||
(super.noSuchMethod(Invocation.method(#mapComments, [data, exercises]),
|
||||
returnValue: <_i3.Exercise>[]) as List<_i3.Exercise>);
|
||||
@override
|
||||
_i9.Future<void> checkExerciseCacheVersion() =>
|
||||
_i10.Future<void> checkExerciseCacheVersion() =>
|
||||
(super.noSuchMethod(Invocation.method(#checkExerciseCacheVersion, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
returnValueForMissingStub: Future<void>.value()) as _i10.Future<void>);
|
||||
@override
|
||||
_i9.Future<void> fetchAndSetExercises() =>
|
||||
_i10.Future<void> fetchAndSetExercises() =>
|
||||
(super.noSuchMethod(Invocation.method(#fetchAndSetExercises, []),
|
||||
returnValue: Future<void>.value(),
|
||||
returnValueForMissingStub: Future<void>.value()) as _i9.Future<void>);
|
||||
returnValueForMissingStub: Future<void>.value()) as _i10.Future<void>);
|
||||
@override
|
||||
_i9.Future<List<_i3.Exercise>> searchExercise(String? name,
|
||||
[String? languageCode = r'en']) =>
|
||||
(super.noSuchMethod(
|
||||
Invocation.method(#searchExercise, [name, languageCode]),
|
||||
_i10.Future<List<_i3.Exercise>> searchExercise(String? name, [String? languageCode = r'en']) =>
|
||||
(super.noSuchMethod(Invocation.method(#searchExercise, [name, languageCode]),
|
||||
returnValue: Future<List<_i3.Exercise>>.value(<_i3.Exercise>[]))
|
||||
as _i9.Future<List<_i3.Exercise>>);
|
||||
as _i10.Future<List<_i3.Exercise>>);
|
||||
@override
|
||||
String toString() => super.toString();
|
||||
@override
|
||||
void addListener(_i11.VoidCallback? listener) =>
|
||||
super.noSuchMethod(Invocation.method(#addListener, [listener]),
|
||||
returnValueForMissingStub: null);
|
||||
void addListener(_i11.VoidCallback? listener) => super
|
||||
.noSuchMethod(Invocation.method(#addListener, [listener]), returnValueForMissingStub: null);
|
||||
@override
|
||||
void removeListener(_i11.VoidCallback? listener) =>
|
||||
super.noSuchMethod(Invocation.method(#removeListener, [listener]),
|
||||
returnValueForMissingStub: null);
|
||||
@override
|
||||
void dispose() => super.noSuchMethod(Invocation.method(#dispose, []),
|
||||
returnValueForMissingStub: null);
|
||||
void dispose() =>
|
||||
super.noSuchMethod(Invocation.method(#dispose, []), returnValueForMissingStub: null);
|
||||
@override
|
||||
void notifyListeners() =>
|
||||
super.noSuchMethod(Invocation.method(#notifyListeners, []),
|
||||
returnValueForMissingStub: null);
|
||||
super.noSuchMethod(Invocation.method(#notifyListeners, []), returnValueForMissingStub: null);
|
||||
}
|
||||
|
||||
@@ -22,80 +22,89 @@ import 'package:wger/models/exercises/equipment.dart';
|
||||
import 'package:wger/models/exercises/exercise.dart';
|
||||
import 'package:wger/models/exercises/muscle.dart';
|
||||
|
||||
const muscle1 = Muscle(id: 1, name: 'Flutterus maximus', isFront: true);
|
||||
const muscle2 = Muscle(id: 2, name: 'Biceps', isFront: true);
|
||||
const muscle3 = Muscle(id: 3, name: 'Booty', isFront: false);
|
||||
const tMuscle1 = Muscle(id: 1, name: 'Flutterus maximus', isFront: true);
|
||||
const tMuscle2 = Muscle(id: 2, name: 'Biceps', isFront: true);
|
||||
const tMuscle3 = Muscle(id: 3, name: 'Booty', isFront: false);
|
||||
|
||||
const category1 = ExerciseCategory(id: 1, name: 'Arms');
|
||||
const category2 = ExerciseCategory(id: 2, name: 'Legs');
|
||||
const category3 = ExerciseCategory(id: 3, name: 'Abs');
|
||||
const category4 = ExerciseCategory(id: 4, name: 'Shoulders');
|
||||
const tCategory1 = ExerciseCategory(id: 1, name: 'Arms');
|
||||
const tCategory2 = ExerciseCategory(id: 2, name: 'Legs');
|
||||
const tCategory3 = ExerciseCategory(id: 3, name: 'Abs');
|
||||
const tCategory4 = ExerciseCategory(id: 4, name: 'Shoulders');
|
||||
|
||||
const equipment1 = Equipment(id: 1, name: 'Bench');
|
||||
const equipment2 = Equipment(id: 1, name: 'Dumbbell');
|
||||
const equipment3 = Equipment(id: 2, name: 'Matress');
|
||||
const tEquipment1 = Equipment(id: 1, name: 'Bench');
|
||||
const tEquipment2 = Equipment(id: 1, name: 'Dumbbell');
|
||||
const tEquipment3 = Equipment(id: 2, name: 'Matress');
|
||||
|
||||
List<Exercise> getExercise() {
|
||||
final base1 = ExerciseBase(
|
||||
id: 1,
|
||||
uuid: 'uuid1',
|
||||
creationDate: DateTime(2021, 09, 01),
|
||||
updateDate: DateTime(2021, 09, 10),
|
||||
category: category1,
|
||||
equipment: [equipment1, equipment2],
|
||||
muscles: [muscle1, muscle2],
|
||||
musclesSecondary: [muscle3],
|
||||
);
|
||||
final tBase1 = ExerciseBase(
|
||||
id: 1,
|
||||
uuid: 'uuid1',
|
||||
creationDate: DateTime(2021, 09, 01),
|
||||
updateDate: DateTime(2021, 09, 10),
|
||||
category: tCategory1,
|
||||
equipment: const [tEquipment1, tEquipment2],
|
||||
muscles: const [tMuscle1, tMuscle2],
|
||||
musclesSecondary: const [tMuscle3],
|
||||
);
|
||||
|
||||
final exercise1 = Exercise(
|
||||
id: 1,
|
||||
baseId: 1,
|
||||
uuid: 'uuid',
|
||||
languageId: 1,
|
||||
creationDate: DateTime(2021, 1, 15),
|
||||
name: 'test exercise 1',
|
||||
description: 'add clever text',
|
||||
base: base1);
|
||||
final tBase2 = ExerciseBase(
|
||||
id: 2,
|
||||
uuid: 'uuid2',
|
||||
creationDate: DateTime(2021, 08, 01),
|
||||
updateDate: DateTime(2021, 08, 10),
|
||||
category: tCategory2,
|
||||
equipment: const [tEquipment2],
|
||||
muscles: const [tMuscle1],
|
||||
musclesSecondary: const [tMuscle2],
|
||||
);
|
||||
|
||||
final base2 = ExerciseBase(
|
||||
id: 2,
|
||||
uuid: 'uuid2',
|
||||
creationDate: DateTime(2021, 08, 01),
|
||||
updateDate: DateTime(2021, 08, 10),
|
||||
category: category2,
|
||||
equipment: [equipment2],
|
||||
muscles: [muscle1],
|
||||
musclesSecondary: [muscle2],
|
||||
);
|
||||
final exercise2 = Exercise(
|
||||
id: 2,
|
||||
baseId: 2,
|
||||
uuid: '111-2222-44444',
|
||||
languageId: 2,
|
||||
creationDate: DateTime(2021, 1, 15),
|
||||
name: 'test exercise 2',
|
||||
description: 'Lorem ipsum etc',
|
||||
base: base2);
|
||||
final tBase3 = ExerciseBase(
|
||||
id: 3,
|
||||
uuid: 'uuid3',
|
||||
creationDate: DateTime(2021, 08, 01),
|
||||
updateDate: DateTime(2021, 08, 01),
|
||||
category: tCategory3,
|
||||
equipment: const [tEquipment2],
|
||||
muscles: const [tMuscle1],
|
||||
musclesSecondary: const [tMuscle2],
|
||||
);
|
||||
|
||||
final base3 = ExerciseBase(
|
||||
id: 3,
|
||||
uuid: 'uuid3',
|
||||
creationDate: DateTime(2021, 08, 01),
|
||||
updateDate: DateTime(2021, 08, 01),
|
||||
category: category3,
|
||||
equipment: [equipment2],
|
||||
muscles: [muscle1],
|
||||
musclesSecondary: [muscle2],
|
||||
);
|
||||
final exercise3 = Exercise(
|
||||
id: 3,
|
||||
baseId: 2,
|
||||
uuid: 'a3b6c7bb-9d22-4119-a5fc-818584d5e9bc',
|
||||
languageId: 2,
|
||||
creationDate: DateTime(2021, 4, 1),
|
||||
name: 'test exercise 3',
|
||||
description: 'The man in black fled across the desert, and the gunslinger followed',
|
||||
base: base3);
|
||||
final tExercise1 = Exercise(
|
||||
id: 1,
|
||||
baseId: 1,
|
||||
uuid: 'uuid',
|
||||
languageId: 1,
|
||||
creationDate: DateTime(2021, 1, 15),
|
||||
name: 'test exercise 1',
|
||||
description: 'add clever text',
|
||||
base: tBase1,
|
||||
);
|
||||
|
||||
return [exercise1, exercise2, exercise3];
|
||||
final tExercise2 = Exercise(
|
||||
id: 2,
|
||||
baseId: 2,
|
||||
uuid: '111-2222-44444',
|
||||
languageId: 2,
|
||||
creationDate: DateTime(2021, 1, 15),
|
||||
name: 'test exercise 2',
|
||||
description: 'Lorem ipsum etc',
|
||||
base: tBase2,
|
||||
);
|
||||
|
||||
final tExercise3 = Exercise(
|
||||
id: 3,
|
||||
baseId: 2,
|
||||
uuid: 'a3b6c7bb-9d22-4119-a5fc-818584d5e9bc',
|
||||
languageId: 2,
|
||||
creationDate: DateTime(2021, 4, 1),
|
||||
name: 'test exercise 3',
|
||||
description: 'The man in black fled across the desert, and the gunslinger followed',
|
||||
base: tBase3,
|
||||
);
|
||||
|
||||
List<Exercise> getTestExercises() {
|
||||
return [tExercise1, tExercise2, tExercise3];
|
||||
}
|
||||
|
||||
List<ExerciseBase> getTestExerciseBases() {
|
||||
return getTestExercises().map((e) => e.base).toList();
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ WorkoutPlan getWorkout() {
|
||||
);
|
||||
setting1.repetitionUnit = repetitionUnit1;
|
||||
setting1.weightUnit = weightUnit1;
|
||||
setting1.exercise = getExercise()[0];
|
||||
setting1.exercise = getTestExercises()[0];
|
||||
setting1.weight = 10;
|
||||
|
||||
final log1 = Log.empty()
|
||||
@@ -55,7 +55,7 @@ WorkoutPlan getWorkout() {
|
||||
..date = DateTime(2021, 5, 1)
|
||||
..reps = 10
|
||||
..workoutPlan = 1;
|
||||
log1.exercise = getExercise()[0];
|
||||
log1.exercise = getTestExercises()[0];
|
||||
log1.weightUnit = weightUnit1;
|
||||
log1.repetitionUnit = repetitionUnit1;
|
||||
|
||||
@@ -66,7 +66,7 @@ WorkoutPlan getWorkout() {
|
||||
..date = DateTime(2021, 5, 1)
|
||||
..reps = 12
|
||||
..workoutPlan = 1;
|
||||
log2.exercise = getExercise()[0];
|
||||
log2.exercise = getTestExercises()[0];
|
||||
log2.weightUnit = weightUnit1;
|
||||
log2.repetitionUnit = repetitionUnit1;
|
||||
|
||||
@@ -77,7 +77,7 @@ WorkoutPlan getWorkout() {
|
||||
..date = DateTime(2021, 5, 2)
|
||||
..reps = 8
|
||||
..workoutPlan = 1;
|
||||
log3.exercise = getExercise()[1];
|
||||
log3.exercise = getTestExercises()[1];
|
||||
log3.weightUnit = weightUnit1;
|
||||
log3.repetitionUnit = repetitionUnit1;
|
||||
|
||||
@@ -88,7 +88,7 @@ WorkoutPlan getWorkout() {
|
||||
order: 1,
|
||||
comment: 'Important to do exercises correctly',
|
||||
);
|
||||
set1.addExercise(getExercise()[0]);
|
||||
set1.addExercise(getTestExercises()[0]);
|
||||
set1.settings.add(setting1);
|
||||
set1.settingsComputed = [setting1, setting1];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user