From 34e0854c68b9ffbfe778924f8c58d89d7bd348d6 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Wed, 11 May 2022 16:58:55 +0200 Subject: [PATCH] Set the baseID when loading exercises --- lib/providers/exercises.dart | 21 +--- lib/widgets/exercises/exercises.dart | 3 +- .../exercise_provider_load_test.dart | 4 + test/workout/workout_set_form_test.mocks.dart | 100 +++++++----------- 4 files changed, 51 insertions(+), 77 deletions(-) diff --git a/lib/providers/exercises.dart b/lib/providers/exercises.dart index 4261ca32..9ac9d416 100644 --- a/lib/providers/exercises.dart +++ b/lib/providers/exercises.dart @@ -39,6 +39,7 @@ import 'package:wger/providers/base_provider.dart'; class ExercisesProvider with ChangeNotifier { final WgerBaseProvider baseProvider; + ExercisesProvider(this.baseProvider); static const EXERCISE_CACHE_DAYS = 7; static const CACHE_VERSION = 3; @@ -92,8 +93,6 @@ class ExercisesProvider with ChangeNotifier { return variations; } - ExercisesProvider(this.baseProvider); - List get bases => [..._exerciseBases]; List get categories => [..._categories]; List get muscles => [..._muscles]; @@ -184,26 +183,15 @@ class ExercisesProvider with ChangeNotifier { /// returned exercises. Since this is typically called by one exercise, we are /// not interested in seeing that same exercise returned in the list of variations. /// If this parameter is not passed, all exercises are returned. - /// - /// languageId: the ID of the language to filter the results by. If this - /// parameter is not passed, all exercises are returned. - List findExerciseBasesByVariationId(int id, - {int? exerciseIdToExclude, int? languageId}) { + List findExerciseBasesByVariationId(int id, {int? exerciseBaseIdToExclude}) { var out = _exerciseBases .where( (base) => base.variationId == id, ) .toList(); - /* - if (languageId != null) { - out = out.where((e) => e.languageId == languageId).toList(); - } - - */ - - if (exerciseIdToExclude != null) { - out = out.where((e) => e.id != exerciseIdToExclude).toList(); + if (exerciseBaseIdToExclude != null) { + out = out.where((e) => e.id != exerciseBaseIdToExclude).toList(); } return out; } @@ -334,6 +322,7 @@ class ExercisesProvider with ChangeNotifier { .cast(); exercise.notes = exerciseData['notes'].map((e) => Comment.fromJson(e)).toList().cast(); + exercise.baseId = baseData['id']; exercises.add(exercise); } diff --git a/lib/widgets/exercises/exercises.dart b/lib/widgets/exercises/exercises.dart index efbe8ae7..11fdb06a 100644 --- a/lib/widgets/exercises/exercises.dart +++ b/lib/widgets/exercises/exercises.dart @@ -86,8 +86,7 @@ class ExerciseDetail extends StatelessWidget { Provider.of(context, listen: false) .findExerciseBasesByVariationId( _exerciseBase.variationId!, - languageId: _exercise.languageId, - exerciseIdToExclude: _exerciseBase.id, + exerciseBaseIdToExclude: _exerciseBase.id, ) .forEach((element) { out.add(ExerciseListTile( diff --git a/test/exercises/exercise_provider_load_test.dart b/test/exercises/exercise_provider_load_test.dart index ab97f956..512176e6 100644 --- a/test/exercises/exercise_provider_load_test.dart +++ b/test/exercises/exercise_provider_load_test.dart @@ -82,6 +82,10 @@ main() { 'd8aa5990-bb47-4111-9823-e2fbd98fe07f', '49a159e1-1e00-409a-81c9-b4d4489fbd67' ]); + + expect(base.exercises[0].name, '2 Handed Kettlebell Swing'); + expect(base.exercises[1].name, 'Kettlebell Con Dos Manos'); + expect(base.exercises[2].name, 'Zweihändiges Kettlebell'); }); }); } diff --git a/test/workout/workout_set_form_test.mocks.dart b/test/workout/workout_set_form_test.mocks.dart index 5ab1b96b..e714be8f 100644 --- a/test/workout/workout_set_form_test.mocks.dart +++ b/test/workout/workout_set_form_test.mocks.dart @@ -24,13 +24,11 @@ import 'package:wger/providers/exercises.dart' as _i8; // 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 _FakeExerciseBase_1 extends _i1.Fake implements _i3.ExerciseBase {} -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 {} @@ -48,8 +46,8 @@ 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<_i3.ExerciseBase>? exercisesBases) => super.noSuchMethod(Invocation.setter(#exerciseBases, exercisesBases), @@ -60,65 +58,57 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider { returnValue: <_i3.ExerciseBase>[]) as List<_i3.ExerciseBase>); @override set filteredExerciseBases(List<_i3.ExerciseBase>? newFilteredExercises) => - super.noSuchMethod( - Invocation.setter(#filteredExerciseBases, newFilteredExercises), + super.noSuchMethod(Invocation.setter(#filteredExerciseBases, newFilteredExercises), returnValueForMissingStub: null); @override Map> get exerciseBasesByVariation => (super.noSuchMethod(Invocation.getter(#exerciseBasesByVariation), - returnValue: >{}) - as Map>); + returnValue: >{}) as Map>); @override List<_i3.ExerciseBase> get bases => - (super.noSuchMethod(Invocation.getter(#bases), - returnValue: <_i3.ExerciseBase>[]) as List<_i3.ExerciseBase>); + (super.noSuchMethod(Invocation.getter(#bases), returnValue: <_i3.ExerciseBase>[]) + as List<_i3.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>); + (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>); + (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>); + (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 setFilters(_i8.Filters? newFilters) => (super.noSuchMethod(Invocation.method(#setFilters, [newFilters]), returnValue: Future.value(), returnValueForMissingStub: Future.value()) as _i9.Future); @override - _i9.Future findByFilters() => - (super.noSuchMethod(Invocation.method(#findByFilters, []), - returnValue: Future.value(), - returnValueForMissingStub: Future.value()) as _i9.Future); + _i9.Future findByFilters() => (super.noSuchMethod(Invocation.method(#findByFilters, []), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) as _i9.Future); @override - void clear() => super.noSuchMethod(Invocation.method(#clear, []), - returnValueForMissingStub: null); + void clear() => + super.noSuchMethod(Invocation.method(#clear, []), returnValueForMissingStub: null); @override _i3.ExerciseBase findExerciseBaseById(int? id) => (super.noSuchMethod(Invocation.method(#findExerciseBaseById, [id]), returnValue: _FakeExerciseBase_1()) as _i3.ExerciseBase); @override List<_i3.ExerciseBase> findExerciseBasesByVariationId(int? id, - {int? exerciseIdToExclude, int? languageId}) => + {int? exerciseBaseIdToExclude, int? languageId}) => (super.noSuchMethod( - Invocation.method(#findExerciseBasesByVariationId, [ - id - ], { - #exerciseIdToExclude: exerciseIdToExclude, - #languageId: languageId - }), + Invocation.method(#findExerciseBasesByVariationId, [id], + {#exerciseIdToExclude: exerciseBaseIdToExclude, #languageId: languageId}), returnValue: <_i3.ExerciseBase>[]) as List<_i3.ExerciseBase>); @override _i4.ExerciseCategory findCategoryById(int? id) => @@ -130,12 +120,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 fetchAndSetCategories() => (super.noSuchMethod(Invocation.method(#fetchAndSetCategories, []), @@ -163,15 +153,12 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider { returnValueForMissingStub: Future.value()) as _i9.Future); @override _i9.Future<_i3.ExerciseBase> fetchAndSetExerciseBase(int? exerciseBaseId) => - (super.noSuchMethod( - Invocation.method(#fetchAndSetExerciseBase, [exerciseBaseId]), - returnValue: - Future<_i3.ExerciseBase>.value(_FakeExerciseBase_1())) + (super.noSuchMethod(Invocation.method(#fetchAndSetExerciseBase, [exerciseBaseId]), + returnValue: Future<_i3.ExerciseBase>.value(_FakeExerciseBase_1())) as _i9.Future<_i3.ExerciseBase>); @override _i3.ExerciseBase readExerciseBaseFromBaseInfo(dynamic baseData) => - (super.noSuchMethod( - Invocation.method(#readExerciseBaseFromBaseInfo, [baseData]), + (super.noSuchMethod(Invocation.method(#readExerciseBaseFromBaseInfo, [baseData]), returnValue: _FakeExerciseBase_1()) as _i3.ExerciseBase); @override _i9.Future checkExerciseCacheVersion() => @@ -184,26 +171,21 @@ class MockExercisesProvider extends _i1.Mock implements _i8.ExercisesProvider { returnValue: Future.value(), returnValueForMissingStub: Future.value()) as _i9.Future); @override - _i9.Future> searchExercise(String? name, - [String? languageCode = r'en']) => - (super.noSuchMethod( - Invocation.method(#searchExercise, [name, languageCode]), - returnValue: - Future>.value(<_i3.ExerciseBase>[])) + _i9.Future> searchExercise(String? name, [String? languageCode = r'en']) => + (super.noSuchMethod(Invocation.method(#searchExercise, [name, languageCode]), + returnValue: Future>.value(<_i3.ExerciseBase>[])) as _i9.Future>); @override - void addListener(_i10.VoidCallback? listener) => - super.noSuchMethod(Invocation.method(#addListener, [listener]), - returnValueForMissingStub: null); + void addListener(_i10.VoidCallback? listener) => super + .noSuchMethod(Invocation.method(#addListener, [listener]), returnValueForMissingStub: null); @override void removeListener(_i10.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); }