Start implementing new flexible routines

This commit is contained in:
Roland Geider
2024-10-30 12:26:18 +01:00
parent 7db93f0b6e
commit a79b6d6b4e
37 changed files with 749 additions and 599 deletions

View File

@@ -16,66 +16,45 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import 'package:intl/intl.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:wger/models/workouts/set.dart';
import 'package:wger/models/workouts/slot.dart';
part 'day.g.dart';
@JsonSerializable()
class Day {
static const Map<int, String> weekdays = {
1: 'Monday',
2: 'Tuesday',
3: 'Wednesday',
4: 'Thursday',
5: 'Friday',
6: 'Saturday',
7: 'Sunday',
};
@JsonKey(required: true)
int? id;
@JsonKey(required: true, name: 'training')
late int workoutId;
@JsonKey(required: true, name: 'routine')
late int routineId;
@JsonKey(required: true)
late String name;
@JsonKey(required: true)
late String description;
@JsonKey(required: true, name: 'day')
List<int> daysOfWeek = [];
@JsonKey(required: true, name: 'is_rest')
late bool isRest;
@JsonKey(required: true, name: 'need_logs_to_advance')
late bool needLogsToAdvance;
@JsonKey(required: true)
late String type;
@JsonKey(required: true)
late Object config;
@JsonKey(includeFromJson: false, includeToJson: false)
List<Set> sets = [];
List<Slot> slots = [];
//@JsonKey(includeFromJson: false, includeToJson: false)
//late WorkoutPlan workout;
Day() {
daysOfWeek = [];
sets = [];
}
String getDayName(int weekDay) {
return weekdays[weekDay]!;
}
String get getDaysText {
return daysOfWeek.map((e) => getDayName(e)).join(', ');
}
String getDaysTextTranslated(locale) {
return daysOfWeek.map((e) => getDayTranslated(e, locale)).join(', ');
}
/// Returns the translated name of the given day
String getDayTranslated(int day, locale) {
// Isn't there another way?... 🙄
final now = DateTime.now();
final firstDayOfWeek = now.subtract(Duration(days: now.weekday));
return DateFormat(DateFormat.WEEKDAY, locale).format(firstDayOfWeek.add(Duration(days: day)));
slots = [];
}
// Boilerplate

View File

@@ -9,18 +9,35 @@ part of 'day.dart';
Day _$DayFromJson(Map<String, dynamic> json) {
$checkKeys(
json,
requiredKeys: const ['id', 'training', 'description', 'day'],
requiredKeys: const [
'id',
'routine',
'name',
'description',
'is_rest',
'need_logs_to_advance',
'type',
'config'
],
);
return Day()
..id = (json['id'] as num?)?.toInt()
..workoutId = (json['training'] as num).toInt()
..routineId = (json['routine'] as num).toInt()
..name = json['name'] as String
..description = json['description'] as String
..daysOfWeek = (json['day'] as List<dynamic>).map((e) => (e as num).toInt()).toList();
..isRest = json['is_rest'] as bool
..needLogsToAdvance = json['need_logs_to_advance'] as bool
..type = json['type'] as String
..config = json['config'] as Object;
}
Map<String, dynamic> _$DayToJson(Day instance) => <String, dynamic>{
'id': instance.id,
'training': instance.workoutId,
'routine': instance.routineId,
'name': instance.name,
'description': instance.description,
'day': instance.daysOfWeek,
'is_rest': instance.isRest,
'need_logs_to_advance': instance.needLogsToAdvance,
'type': instance.type,
'config': instance.config,
};

View File

@@ -9,7 +9,15 @@ part of 'routine.dart';
Routine _$RoutineFromJson(Map<String, dynamic> json) {
$checkKeys(
json,
requiredKeys: const ['id', 'created', 'name', 'description', 'fit_in_week', 'start', 'end'],
requiredKeys: const [
'id',
'created',
'name',
'description',
'fit_in_week',
'start',
'end'
],
);
return Routine(
id: (json['id'] as num?)?.toInt(),

View File

@@ -1,29 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'set.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
Set _$SetFromJson(Map<String, dynamic> json) {
$checkKeys(
json,
requiredKeys: const ['id', 'sets', 'order', 'comment'],
);
return Set(
day: (json['exerciseday'] as num).toInt(),
sets: (json['sets'] as num).toInt(),
order: (json['order'] as num).toInt(),
)
..id = (json['id'] as num?)?.toInt()
..comment = json['comment'] as String? ?? '';
}
Map<String, dynamic> _$SetToJson(Set instance) => <String, dynamic>{
'id': instance.id,
'sets': instance.sets,
'exerciseday': instance.day,
'order': instance.order,
'comment': instance.comment,
};

View File

@@ -18,21 +18,18 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/setting.dart';
import 'package:wger/models/workouts/slot_entry.dart';
part 'set.g.dart';
part 'slot.g.dart';
@JsonSerializable()
class Set {
class Slot {
static const DEFAULT_NR_SETS = 4;
@JsonKey(required: true)
int? id;
@JsonKey(required: true)
late int sets;
@JsonKey(required: false, name: 'exerciseday')
@JsonKey(required: false)
late int day;
@JsonKey(required: true)
@@ -41,25 +38,34 @@ class Set {
@JsonKey(required: true, defaultValue: '')
late String comment;
@JsonKey(includeFromJson: false, includeToJson: false)
List<Exercise> exerciseBasesObj = [];
@JsonKey(required: true)
late Object config;
@JsonKey(includeFromJson: false, includeToJson: false)
List<int> exerciseBasesIds = [];
List<Exercise> exercisesObj = [];
@JsonKey(includeFromJson: false, includeToJson: false)
List<Setting> settings = [];
List<int> exercisesIds = [];
@JsonKey(includeFromJson: false, includeToJson: false)
List<SlotEntry> entries = [];
/// Computed settings (instead of 4x10 this has [10, 10, 10, 10]), used for
/// the gym mode where the individual values are used
@JsonKey(includeFromJson: false, includeToJson: false)
List<Setting> settingsComputed = [];
List<SlotEntry> settingsComputed = [];
Set({required this.day, required this.sets, required this.order});
Slot({
required this.id,
required this.day,
required this.comment,
required this.order,
required this.config,
});
Set.empty();
Slot.empty();
Set.withData({
Slot.withData({
this.id,
sets,
day,
@@ -69,12 +75,11 @@ class Set {
settings,
settingsComputed,
}) {
this.sets = sets ?? DEFAULT_NR_SETS;
this.order = order ?? 1;
this.comment = comment ?? '';
exerciseBasesObj = exercises ?? [];
exerciseBasesIds = exerciseBasesObj.map((e) => e.id!).toList();
this.settings = settings ?? [];
exercisesObj = exercises ?? [];
exercisesIds = exercisesObj.map((e) => e.id!).toList();
this.entries = settings ?? [];
this.settingsComputed = settingsComputed ?? [];
if (day != null) {
this.day = day;
@@ -83,10 +88,10 @@ class Set {
/// Return only one setting object per exercise, this makes rendering workout
/// plans easier and the gym mode uses the synthetic settings anyway.
List<Setting> get settingsFiltered {
final List<Setting> out = [];
List<SlotEntry> get settingsFiltered {
final List<SlotEntry> out = [];
for (final setting in settings) {
for (final setting in entries) {
final foundSettings = out.where(
(element) => element.exerciseId == setting.exerciseId,
);
@@ -99,18 +104,18 @@ class Set {
}
void addExerciseBase(Exercise base) {
exerciseBasesObj.add(base);
exerciseBasesIds.add(base.id!);
exercisesObj.add(base);
exercisesIds.add(base.id!);
}
void removeExercise(Exercise base) {
exerciseBasesObj.removeWhere((e) => e.id == base.id);
exerciseBasesIds.removeWhere((e) => e == base.id);
exercisesObj.removeWhere((e) => e.id == base.id);
exercisesIds.removeWhere((e) => e == base.id);
}
/// Returns all settings for the given exercise
List<Setting> filterSettingsByExercise(Exercise exerciseBase) {
return settings.where((element) => element.exerciseId == exerciseBase.id).toList();
List<SlotEntry> filterSettingsByExercise(Exercise exerciseBase) {
return entries.where((element) => element.exerciseId == exerciseBase.id).toList();
}
/// Returns a list with all repetitions for the given exercise
@@ -137,12 +142,12 @@ class Set {
}
/// Returns a string with all repetitions for the given exercise
String getSmartTextRepr(Exercise execiseBase) {
return getSmartRepr(execiseBase).join(' ');
String getSmartTextRepr(Exercise exerciseBase) {
return getSmartRepr(exerciseBase).join(' ');
}
// Boilerplate
factory Set.fromJson(Map<String, dynamic> json) => _$SetFromJson(json);
factory Slot.fromJson(Map<String, dynamic> json) => _$SlotFromJson(json);
Map<String, dynamic> toJson() => _$SetToJson(this);
Map<String, dynamic> toJson() => _$SlotToJson(this);
}

View File

@@ -0,0 +1,29 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'slot.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
Slot _$SlotFromJson(Map<String, dynamic> json) {
$checkKeys(
json,
requiredKeys: const ['id', 'order', 'comment', 'config'],
);
return Slot(
id: (json['id'] as num?)?.toInt(),
day: (json['day'] as num).toInt(),
comment: json['comment'] as String? ?? '',
order: (json['order'] as num).toInt(),
config: json['config'] as Object,
);
}
Map<String, dynamic> _$SlotToJson(Slot instance) => <String, dynamic>{
'id': instance.id,
'day': instance.day,
'order': instance.order,
'comment': instance.comment,
'config': instance.config,
};

View File

@@ -18,15 +18,14 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:wger/helpers/json.dart';
import 'package:wger/helpers/misc.dart';
import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/repetition_unit.dart';
import 'package:wger/models/workouts/weight_unit.dart';
part 'setting.g.dart';
part 'slot_entry.g.dart';
@JsonSerializable()
class Setting {
class SlotEntry {
/// Allowed RiR values. This list must be kept in sync with RIR_OPTIONS in the
/// wger server
static const POSSIBLE_RIR_VALUES = ['', '0', '0.5', '1', '1.5', '2', '2.5', '3', '3.5', '4'];
@@ -35,16 +34,19 @@ class Setting {
@JsonKey(required: true)
int? id;
@JsonKey(required: true, name: 'set')
late int setId;
@JsonKey(required: true, name: 'slot')
late int slotId;
@JsonKey(required: true)
late int order;
@JsonKey(required: true)
late String type;
@JsonKey(includeFromJson: false, includeToJson: false)
late Exercise exerciseObj;
@JsonKey(required: true, name: 'exercise_base')
@JsonKey(required: true, name: 'exercise')
late int exerciseId;
@JsonKey(required: true, name: 'repetition_unit')
@@ -53,6 +55,9 @@ class Setting {
@JsonKey(includeFromJson: false, includeToJson: false)
late RepetitionUnit repetitionUnitObj;
@JsonKey(required: true, name: 'repetition_rounding')
late num repetitionRounding;
@JsonKey(required: true)
int? reps;
@@ -65,32 +70,39 @@ class Setting {
@JsonKey(includeFromJson: false, includeToJson: false)
late WeightUnit weightUnitObj;
/// Personal notes about this setting. Currently not used
@JsonKey(required: true, name: 'weight_rounding')
late num weightRounding;
@JsonKey(required: true)
late String comment = '';
/// Reps in Reserve
@JsonKey(required: true)
String? rir = '';
late Object config;
Setting({
SlotEntry({
this.id,
required this.setId,
required this.slotId,
required this.order,
required this.type,
required this.exerciseId,
required this.repetitionUnitId,
required this.repetitionRounding,
required this.reps,
required this.weightUnitId,
required this.weightRounding,
required this.comment,
required this.rir,
});
Setting.empty();
SlotEntry.empty();
get rir {
return 'DELETE ME! RIR';
}
// Boilerplate
factory Setting.fromJson(Map<String, dynamic> json) => _$SettingFromJson(json);
factory SlotEntry.fromJson(Map<String, dynamic> json) => _$SlotEntryFromJson(json);
Map<String, dynamic> toJson() => _$SettingToJson(this);
Map<String, dynamic> toJson() => _$SlotEntryToJson(this);
set exercise(Exercise exercise) {
exerciseObj = exercise;
@@ -107,16 +119,7 @@ class Setting {
repetitionUnitId = repetitionUnit.id;
}
void setRir(String newRir) {
if (POSSIBLE_RIR_VALUES.contains(newRir)) {
rir = newRir;
} else {
throw Exception('RiR value not allowed: $newRir');
}
}
/// Returns the text representation for a single setting, used in the gym mode
String get singleSettingRepText {
return repText(reps, repetitionUnitObj, weight, weightUnitObj, rir);
return 'DELETE singleSettingRepText!';
}
}

View File

@@ -1,49 +1,59 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'setting.dart';
part of 'slot_entry.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
Setting _$SettingFromJson(Map<String, dynamic> json) {
SlotEntry _$SlotEntryFromJson(Map<String, dynamic> json) {
$checkKeys(
json,
requiredKeys: const [
'id',
'set',
'slot',
'order',
'exercise_base',
'type',
'exercise',
'repetition_unit',
'repetition_rounding',
'reps',
'weight',
'weight_unit',
'weight_rounding',
'comment',
'rir'
'config'
],
);
return Setting(
return SlotEntry(
id: (json['id'] as num?)?.toInt(),
setId: (json['set'] as num).toInt(),
slotId: (json['slot'] as num).toInt(),
order: (json['order'] as num).toInt(),
exerciseId: (json['exercise_base'] as num).toInt(),
type: json['type'] as String,
exerciseId: (json['exercise'] as num).toInt(),
repetitionUnitId: (json['repetition_unit'] as num).toInt(),
repetitionRounding: json['repetition_rounding'] as num,
reps: (json['reps'] as num?)?.toInt(),
weightUnitId: (json['weight_unit'] as num).toInt(),
weightRounding: json['weight_rounding'] as num,
comment: json['comment'] as String,
rir: json['rir'] as String?,
)..weight = stringToNum(json['weight'] as String?);
)
..weight = stringToNum(json['weight'] as String?)
..config = json['config'] as Object;
}
Map<String, dynamic> _$SettingToJson(Setting instance) => <String, dynamic>{
Map<String, dynamic> _$SlotEntryToJson(SlotEntry instance) => <String, dynamic>{
'id': instance.id,
'set': instance.setId,
'slot': instance.slotId,
'order': instance.order,
'exercise_base': instance.exerciseId,
'type': instance.type,
'exercise': instance.exerciseId,
'repetition_unit': instance.repetitionUnitId,
'repetition_rounding': instance.repetitionRounding,
'reps': instance.reps,
'weight': numToString(instance.weight),
'weight_unit': instance.weightUnitId,
'weight_rounding': instance.weightRounding,
'comment': instance.comment,
'rir': instance.rir,
'config': instance.config,
};

View File

@@ -30,8 +30,8 @@ import 'package:wger/models/workouts/log.dart';
import 'package:wger/models/workouts/repetition_unit.dart';
import 'package:wger/models/workouts/routine.dart';
import 'package:wger/models/workouts/session.dart';
import 'package:wger/models/workouts/set.dart';
import 'package:wger/models/workouts/setting.dart';
import 'package:wger/models/workouts/slot.dart';
import 'package:wger/models/workouts/slot_entry.dart';
import 'package:wger/models/workouts/weight_unit.dart';
import 'package:wger/providers/base_provider.dart';
import 'package:wger/providers/exercises.dart';
@@ -39,8 +39,8 @@ import 'package:wger/providers/exercises.dart';
class WorkoutPlansProvider with ChangeNotifier {
static const _routinesUrlPath = 'routine';
static const _daysUrlPath = 'day';
static const _setsUrlPath = 'set';
static const _settingsUrlPath = 'setting';
static const _slotsUrlPath = 'slot';
static const _slotEntriesUrlPath = 'slot-entry';
static const _logsUrlPath = 'workoutlog';
static const _sessionUrlPath = 'workoutsession';
static const _weightUnitUrlPath = 'setting-weightunit';
@@ -182,7 +182,7 @@ class WorkoutPlansProvider with ChangeNotifier {
//
// This is a bit ugly, but saves us sending lots of requests later on
final allSettingsData = await baseProvider.fetch(
baseProvider.makeUrl(_settingsUrlPath, query: {'limit': '1000'}),
baseProvider.makeUrl(_slotEntriesUrlPath, query: {'limit': '1000'}),
);
Routine plan;
@@ -201,20 +201,20 @@ class WorkoutPlansProvider with ChangeNotifier {
final day = Day.fromJson(dayEntry);
// Sets
final List<Set> sets = [];
final List<Slot> sets = [];
final setData = await baseProvider.fetch(
baseProvider.makeUrl(_setsUrlPath, query: {'exerciseday': day.id.toString()}),
baseProvider.makeUrl(_slotsUrlPath, query: {'exerciseday': day.id.toString()}),
);
for (final setEntry in setData['results']) {
final workoutSet = Set.fromJson(setEntry);
final workoutSet = Slot.fromJson(setEntry);
fetchComputedSettings(workoutSet); // request!
final List<Setting> settings = [];
final List<SlotEntry> settings = [];
final settingData = allSettingsData['results'].where((s) => s['set'] == workoutSet.id);
for (final settingEntry in settingData) {
final workoutSetting = Setting.fromJson(settingEntry);
final workoutSetting = SlotEntry.fromJson(settingEntry);
workoutSetting.exercise = await _exercises.fetchAndSetExercise(workoutSetting.exerciseId);
workoutSetting.weightUnit = _weightUnits.firstWhere(
@@ -223,16 +223,16 @@ class WorkoutPlansProvider with ChangeNotifier {
workoutSetting.repetitionUnit = _repetitionUnit.firstWhere(
(e) => e.id == workoutSetting.repetitionUnitId,
);
if (!workoutSet.exerciseBasesIds.contains(workoutSetting.exerciseId)) {
if (!workoutSet.exercisesIds.contains(workoutSetting.exerciseId)) {
workoutSet.addExerciseBase(workoutSetting.exerciseObj);
}
settings.add(workoutSetting);
}
workoutSet.settings = settings;
workoutSet.entries = settings;
sets.add(workoutSet);
}
day.sets = sets;
day.slots = sets;
days.add(day);
}
plan.days = days;
@@ -369,13 +369,13 @@ class WorkoutPlansProvider with ChangeNotifier {
/*
* Saves a new day instance to the DB and adds it to the given workout
*/
day.workoutId = workout.id!;
day.routineId = workout.id!;
final data = await baseProvider.post(
day.toJson(),
baseProvider.makeUrl(_daysUrlPath),
);
day = Day.fromJson(data);
day.sets = [];
day.slots = [];
workout.days.insert(0, day);
notifyListeners();
return day;
@@ -400,48 +400,48 @@ class WorkoutPlansProvider with ChangeNotifier {
/*
* Sets
*/
Future<Set> addSet(Set workoutSet) async {
Future<Slot> addSet(Slot workoutSet) async {
final data = await baseProvider.post(
workoutSet.toJson(),
baseProvider.makeUrl(_setsUrlPath),
baseProvider.makeUrl(_slotsUrlPath),
);
final set = Set.fromJson(data);
final set = Slot.fromJson(data);
notifyListeners();
return set;
}
Future<void> editSet(Set workoutSet) async {
Future<void> editSet(Slot workoutSet) async {
await baseProvider.patch(
workoutSet.toJson(),
baseProvider.makeUrl(_setsUrlPath, id: workoutSet.id),
baseProvider.makeUrl(_slotsUrlPath, id: workoutSet.id),
);
notifyListeners();
}
Future<List<Set>> reorderSets(List<Set> sets, int startIndex) async {
Future<List<Slot>> reorderSets(List<Slot> sets, int startIndex) async {
for (int i = startIndex; i < sets.length; i++) {
sets[i].order = i;
await baseProvider.patch(
sets[i].toJson(),
baseProvider.makeUrl(_setsUrlPath, id: sets[i].id),
baseProvider.makeUrl(_slotsUrlPath, id: sets[i].id),
);
}
notifyListeners();
return sets;
}
Future<void> fetchComputedSettings(Set workoutSet) async {
Future<void> fetchComputedSettings(Slot workoutSet) async {
final data = await baseProvider.fetch(
baseProvider.makeUrl(
_setsUrlPath,
_slotsUrlPath,
id: workoutSet.id,
objectMethod: 'computed_settings',
),
);
final List<Setting> settings = [];
final List<SlotEntry> settings = [];
data['results'].forEach((e) {
final Setting workoutSetting = Setting.fromJson(e);
final SlotEntry workoutSetting = SlotEntry.fromJson(e);
workoutSetting.weightUnitObj = _weightUnits.firstWhere(
(unit) => unit.id == workoutSetting.weightUnitId,
@@ -456,10 +456,10 @@ class WorkoutPlansProvider with ChangeNotifier {
notifyListeners();
}
Future<String> fetchSmartText(Set workoutSet, Translation exercise) async {
Future<String> fetchSmartText(Slot workoutSet, Translation exercise) async {
final data = await baseProvider.fetch(
baseProvider.makeUrl(
_setsUrlPath,
_slotsUrlPath,
id: workoutSet.id,
objectMethod: 'smart_text',
query: {'exercise': exercise.id.toString()},
@@ -469,12 +469,12 @@ class WorkoutPlansProvider with ChangeNotifier {
return data['results'];
}
Future<void> deleteSet(Set workoutSet) async {
await baseProvider.deleteRequest(_setsUrlPath, workoutSet.id!);
Future<void> deleteSet(Slot workoutSet) async {
await baseProvider.deleteRequest(_slotsUrlPath, workoutSet.id!);
for (final workout in _workoutPlans) {
for (final day in workout.days) {
day.sets.removeWhere((element) => element.id == workoutSet.id);
day.slots.removeWhere((element) => element.id == workoutSet.id);
}
}
notifyListeners();
@@ -483,12 +483,12 @@ class WorkoutPlansProvider with ChangeNotifier {
/*
* Setting
*/
Future<Setting> addSetting(Setting workoutSetting) async {
Future<SlotEntry> addSetting(SlotEntry workoutSetting) async {
final data = await baseProvider.post(
workoutSetting.toJson(),
baseProvider.makeUrl(_settingsUrlPath),
baseProvider.makeUrl(_slotEntriesUrlPath),
);
final setting = Setting.fromJson(data);
final setting = SlotEntry.fromJson(data);
notifyListeners();
return setting;
}

View File

@@ -394,13 +394,13 @@ class _DashboardWorkoutWidgetState extends State<DashboardWorkoutWidget> {
children: [
Expanded(
child: Text(
day.description,
day.name,
style: const TextStyle(fontWeight: FontWeight.bold),
overflow: TextOverflow.ellipsis,
),
),
Expanded(
child: MutedText(day.getDaysText, textAlign: TextAlign.right),
child: MutedText(day.description, textAlign: TextAlign.right),
),
IconButton(
icon: const Icon(Icons.play_arrow),
@@ -413,7 +413,7 @@ class _DashboardWorkoutWidgetState extends State<DashboardWorkoutWidget> {
),
));
for (final set in day.sets) {
for (final set in day.slots) {
out.add(SizedBox(
width: double.infinity,
child: Column(

View File

@@ -21,8 +21,8 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:provider/provider.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/models/workouts/day.dart';
import 'package:wger/models/workouts/set.dart';
import 'package:wger/models/workouts/setting.dart';
import 'package:wger/models/workouts/slot.dart';
import 'package:wger/models/workouts/slot_entry.dart';
import 'package:wger/providers/workout_plans.dart';
import 'package:wger/screens/form_screen.dart';
import 'package:wger/screens/gym_mode.dart';
@@ -32,8 +32,8 @@ import 'package:wger/widgets/exercises/images.dart';
import 'package:wger/widgets/workouts/forms.dart';
class SettingWidget extends StatelessWidget {
final Set set;
final Setting setting;
final Slot set;
final SlotEntry setting;
final bool expanded;
final Function toggle;
@@ -100,12 +100,12 @@ class WorkoutDayWidget extends StatefulWidget {
class _WorkoutDayWidgetState extends State<WorkoutDayWidget> {
bool _editing = false;
late List<Set> _sets;
late List<Slot> _sets;
@override
void initState() {
super.initState();
_sets = widget._day.sets;
_sets = widget._day.slots;
_sets.sort((a, b) => a.order.compareTo(b.order));
}
@@ -115,7 +115,7 @@ class _WorkoutDayWidgetState extends State<WorkoutDayWidget> {
});
}
Widget getSetRow(Set set, int index) {
Widget getSetRow(Slot set, int index) {
return Row(
key: ValueKey(set.id),
crossAxisAlignment: CrossAxisAlignment.center,
@@ -207,7 +207,7 @@ class _WorkoutDayWidgetState extends State<WorkoutDayWidget> {
Provider.of<WorkoutPlansProvider>(
context,
listen: false,
).findById(widget._day.workoutId),
).findById(widget._day.routineId),
widget._day,
),
hasListView: true,
@@ -250,7 +250,8 @@ class _WorkoutDayWidgetState extends State<WorkoutDayWidget> {
).reorderSets(_sets, startIndex);
},
children: [
for (var i = 0; i < widget._day.sets.length; i++) getSetRow(widget._day.sets[i], i),
for (var i = 0; i < widget._day.slots.length; i++)
getSetRow(widget._day.slots[i], i),
],
),
],
@@ -278,11 +279,11 @@ class DayHeader extends StatelessWidget {
return ListTile(
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
title: Text(
_day.description,
_day.name,
style: Theme.of(context).textTheme.headlineSmall,
overflow: TextOverflow.ellipsis,
),
subtitle: Text(_day.getDaysTextTranslated(Localizations.localeOf(context).languageCode)),
subtitle: Text(_day.description),
leading: const Icon(Icons.play_arrow),
minLeadingWidth: 8,
trailing: Row(mainAxisSize: MainAxisSize.min, children: [

View File

@@ -25,8 +25,8 @@ import 'package:wger/models/exercises/exercise.dart';
import 'package:wger/models/workouts/day.dart';
import 'package:wger/models/workouts/repetition_unit.dart';
import 'package:wger/models/workouts/routine.dart';
import 'package:wger/models/workouts/set.dart';
import 'package:wger/models/workouts/setting.dart';
import 'package:wger/models/workouts/slot.dart';
import 'package:wger/models/workouts/slot_entry.dart';
import 'package:wger/models/workouts/weight_unit.dart';
import 'package:wger/providers/exercises.dart';
import 'package:wger/providers/workout_plans.dart';
@@ -127,39 +127,6 @@ class WorkoutForm extends StatelessWidget {
}
}
class DayCheckbox extends StatefulWidget {
final Day _day;
final int _dayNr;
const DayCheckbox(this._dayNr, this._day);
@override
_DayCheckboxState createState() => _DayCheckboxState();
}
class _DayCheckboxState extends State<DayCheckbox> {
@override
Widget build(BuildContext context) {
return CheckboxListTile(
key: Key('field-checkbox-${widget._dayNr}'),
title: Text(widget._day.getDayTranslated(
widget._dayNr,
Localizations.localeOf(context).languageCode,
)),
value: widget._day.daysOfWeek.contains(widget._dayNr),
onChanged: (bool? newValue) {
setState(() {
if (!newValue!) {
widget._day.daysOfWeek.remove(widget._dayNr);
} else {
widget._day.daysOfWeek.add(widget._dayNr);
}
});
},
);
}
}
class DayFormWidget extends StatefulWidget {
final Routine workout;
final dayController = TextEditingController();
@@ -167,7 +134,7 @@ class DayFormWidget extends StatefulWidget {
DayFormWidget(this.workout, [Day? day]) {
_day = day ?? Day();
_day.workoutId = workout.id!;
_day.routineId = workout.id!;
if (_day.id != null) {
dayController.text = day!.description;
}
@@ -204,14 +171,11 @@ class _DayFormWidgetState extends State<DayFormWidget> {
return AppLocalizations.of(context).enterCharacters(minLength, maxLength);
}
if (widget._day.daysOfWeek.isEmpty) {
return 'You need to select at least one day';
}
return null;
},
),
const SizedBox(height: 10),
...Day.weekdays.keys.map((dayNr) => DayCheckbox(dayNr, widget._day)),
// const SizedBox(height: 10),
// ...Day.weekdays.keys.map((dayNr) => DayCheckbox(dayNr, widget._day)),
ElevatedButton(
key: const Key(SUBMIT_BUTTON_KEY_NAME),
child: Text(AppLocalizations.of(context).save),
@@ -262,10 +226,10 @@ class _DayFormWidgetState extends State<DayFormWidget> {
class SetFormWidget extends StatefulWidget {
final Day _day;
late final Set _set;
late final Slot _set;
SetFormWidget(this._day, [Set? set]) {
_set = set ?? Set.withData(day: _day.id, order: _day.sets.length, sets: 4);
SetFormWidget(this._day, [Slot? set]) {
_set = set ?? Slot.withData(day: _day.id, order: _day.slots.length, sets: 4);
}
@override
@@ -273,7 +237,7 @@ class SetFormWidget extends StatefulWidget {
}
class _SetFormWidgetState extends State<SetFormWidget> {
double _currentSetSliderValue = Set.DEFAULT_NR_SETS.toDouble();
double _currentSetSliderValue = Slot.DEFAULT_NR_SETS.toDouble();
bool _detailed = false;
bool _searchEnglish = true;
@@ -306,19 +270,19 @@ class _SetFormWidgetState extends State<SetFormWidget> {
void addSettings() {
final workoutProvider = context.read<WorkoutPlansProvider>();
widget._set.settings = [];
widget._set.entries = [];
int order = 0;
for (final exercise in widget._set.exerciseBasesObj) {
for (final exercise in widget._set.exercisesObj) {
order++;
for (int loop = 0; loop < widget._set.sets; loop++) {
final Setting setting = Setting.empty();
setting.order = order;
setting.exercise = exercise;
setting.weightUnit = workoutProvider.defaultWeightUnit;
setting.repetitionUnit = workoutProvider.defaultRepetitionUnit;
// for (int loop = 0; loop < widget._set.sets; loop++) {
final SlotEntry setting = SlotEntry.empty();
setting.order = order;
setting.exercise = exercise;
setting.weightUnit = workoutProvider.defaultWeightUnit;
setting.repetitionUnit = workoutProvider.defaultRepetitionUnit;
widget._set.settings.add(setting);
}
widget._set.entries.add(setting);
// }
}
}
@@ -343,14 +307,14 @@ class _SetFormWidgetState extends State<SetFormWidget> {
label: _currentSetSliderValue.round().toString(),
onChanged: (double value) {
setState(() {
widget._set.sets = value.round();
// widget._set.sets = value.round();
_currentSetSliderValue = value;
addSettings();
});
},
inactiveColor: Theme.of(context).colorScheme.surface,
),
if (widget._set.settings.isNotEmpty)
if (widget._set.entries.isNotEmpty)
SwitchListTile(
title: Text(AppLocalizations.of(context).setUnitsAndRir),
value: _detailed,
@@ -422,15 +386,15 @@ class _SetFormWidgetState extends State<SetFormWidget> {
),
validator: (value) {
// At least one exercise must be selected
if (widget._set.exerciseBasesIds.isEmpty) {
if (widget._set.exercisesIds.isEmpty) {
return AppLocalizations.of(context).selectExercise;
}
// At least one setting has to be filled in
if (widget._set.settings
if (widget._set.entries
.where((s) => s.weight == null && s.reps == null)
.length ==
widget._set.settings.length) {
widget._set.entries.length) {
return AppLocalizations.of(context).enterRepetitionsOrWeight;
}
return null;
@@ -534,12 +498,12 @@ class _SetFormWidgetState extends State<SetFormWidget> {
},
),
const SizedBox(height: 10),
...widget._set.exerciseBasesObj.asMap().entries.map((entry) {
...widget._set.exercisesObj.asMap().entries.map((entry) {
final index = entry.key;
final exercise = entry.value;
final showSupersetInfo = (index + 1) < widget._set.exerciseBasesObj.length;
final showSupersetInfo = (index + 1) < widget._set.exercisesObj.length;
final settings =
widget._set.settings.where((e) => e.exerciseObj.id == exercise.id).toList();
widget._set.entries.where((e) => e.exerciseObj.id == exercise.id).toList();
return Column(
children: [
@@ -580,24 +544,24 @@ class _SetFormWidgetState extends State<SetFormWidget> {
);
// Save set
final Set setDb = await workoutProvider.addSet(widget._set);
final Slot setDb = await workoutProvider.addSet(widget._set);
widget._set.id = setDb.id;
// Remove unused settings
widget._set.settings.removeWhere((s) => s.weight == null && s.reps == null);
widget._set.entries.removeWhere((s) => s.weight == null && s.reps == null);
// Save remaining settings
for (final setting in widget._set.settings) {
setting.setId = setDb.id!;
for (final setting in widget._set.entries) {
setting.slotId = setDb.id!;
setting.comment = '';
final Setting settingDb = await workoutProvider.addSetting(setting);
final SlotEntry settingDb = await workoutProvider.addSetting(setting);
setting.id = settingDb.id;
}
// Add to workout day
workoutProvider.fetchComputedSettings(widget._set);
widget._day.sets.add(widget._set);
widget._day.slots.add(widget._set);
// Close the bottom sheet
if (context.mounted) {
@@ -619,7 +583,7 @@ class ExerciseSetting extends StatelessWidget {
late final int _numberOfSets;
final bool _detailed;
final Function removeExercise;
final List<Setting> _settings;
final List<SlotEntry> _settings;
ExerciseSetting(
this._exerciseBase,
@@ -744,7 +708,7 @@ class ExerciseSetting extends StatelessWidget {
class RepsInputWidget extends StatelessWidget {
final _repsController = TextEditingController();
final Setting _setting;
final SlotEntry _setting;
final bool _detailed;
RepsInputWidget(this._setting, this._detailed);
@@ -781,7 +745,7 @@ class RepsInputWidget extends StatelessWidget {
class WeightInputWidget extends StatelessWidget {
final _weightController = TextEditingController();
final Setting _setting;
final SlotEntry _setting;
final bool _detailed;
WeightInputWidget(this._setting, this._detailed);
@@ -827,7 +791,7 @@ class RiRInputWidget extends StatefulWidget {
static const SLIDER_START = -0.5;
RiRInputWidget(this._setting) {
dropdownValue = _setting.rir ?? Setting.DEFAULT_RIR;
dropdownValue = _setting.rir ?? SlotEntry.DEFAULT_RIR;
// Read string RiR into a double
if (_setting.rir != null) {
@@ -877,11 +841,11 @@ class _RiRInputWidgetState extends State<RiRInputWidget> {
child: Slider(
value: widget._currentSetSliderValue,
min: RiRInputWidget.SLIDER_START,
max: (Setting.POSSIBLE_RIR_VALUES.length - 2) / 2,
divisions: Setting.POSSIBLE_RIR_VALUES.length - 1,
max: (SlotEntry.POSSIBLE_RIR_VALUES.length - 2) / 2,
divisions: SlotEntry.POSSIBLE_RIR_VALUES.length - 1,
label: getSliderLabel(widget._currentSetSliderValue),
onChanged: (double value) {
widget._setting.setRir(mapDoubleToAllowedRir(value));
// widget._setting.setRir(mapDoubleToAllowedRir(value));
setState(() {
widget._currentSetSliderValue = value;
});

View File

@@ -34,8 +34,8 @@ import 'package:wger/models/workouts/day.dart';
import 'package:wger/models/workouts/log.dart';
import 'package:wger/models/workouts/routine.dart';
import 'package:wger/models/workouts/session.dart';
import 'package:wger/models/workouts/set.dart';
import 'package:wger/models/workouts/setting.dart';
import 'package:wger/models/workouts/slot.dart';
import 'package:wger/models/workouts/slot_entry.dart';
import 'package:wger/providers/exercises.dart';
import 'package:wger/providers/workout_plans.dart';
import 'package:wger/theme/theme.dart';
@@ -72,7 +72,7 @@ class _GymModeState extends State<GymMode> {
void initState() {
super.initState();
// Calculate amount of elements for progress indicator
for (final set in widget._workoutDay.sets) {
for (final set in widget._workoutDay.slots) {
_totalElements = _totalElements + set.settingsComputed.length;
}
// Calculate the pages for the navigation
@@ -80,7 +80,7 @@ class _GymModeState extends State<GymMode> {
// This duplicates the code below in the getContent method, but it seems to
// be the easiest way
var currentPage = 1;
for (final set in widget._workoutDay.sets) {
for (final set in widget._workoutDay.slots) {
var firstPage = true;
for (final setting in set.settingsComputed) {
final exerciseBase = Provider.of<ExercisesProvider>(context, listen: false)
@@ -108,7 +108,7 @@ class _GymModeState extends State<GymMode> {
var currentElement = 1;
final List<Widget> out = [];
for (final set in widget._workoutDay.sets) {
for (final set in widget._workoutDay.slots) {
var firstPage = true;
for (final setting in set.settingsComputed) {
final ratioCompleted = currentElement / _totalElements;
@@ -129,7 +129,7 @@ class _GymModeState extends State<GymMode> {
setting,
set,
exerciseBase,
workoutProvider.findById(widget._workoutDay.workoutId),
workoutProvider.findById(widget._workoutDay.routineId),
ratioCompleted,
_exercisePages,
));
@@ -150,7 +150,7 @@ class _GymModeState extends State<GymMode> {
...getContent(),
SessionPage(
Provider.of<WorkoutPlansProvider>(context, listen: false)
.findById(widget._workoutDay.workoutId),
.findById(widget._workoutDay.routineId),
_controller,
widget._start,
_exercisePages,
@@ -180,7 +180,7 @@ class StartPage extends StatelessWidget {
Expanded(
child: ListView(
children: [
..._day.sets.map((set) {
..._day.slots.map((set) {
return Column(
children: [
...set.settingsFiltered.map((s) {
@@ -220,8 +220,8 @@ class StartPage extends StatelessWidget {
class LogPage extends StatefulWidget {
final PageController _controller;
final Setting _setting;
final Set _set;
final SlotEntry _entry;
final Slot _set;
final Exercise _exerciseBase;
final Routine _workoutPlan;
final double _ratioCompleted;
@@ -230,7 +230,7 @@ class LogPage extends StatefulWidget {
LogPage(
this._controller,
this._setting,
this._entry,
this._set,
this._exerciseBase,
this._workoutPlan,
@@ -240,9 +240,9 @@ class LogPage extends StatefulWidget {
_log.date = DateTime.now();
_log.workoutPlan = _workoutPlan.id!;
_log.exerciseBase = _exerciseBase;
_log.weightUnit = _setting.weightUnitObj;
_log.repetitionUnit = _setting.repetitionUnitObj;
_log.rir = _setting.rir;
_log.weightUnit = _entry.weightUnitObj;
_log.repetitionUnit = _entry.repetitionUnitObj;
_log.rir = _entry.rir;
}
@override
@@ -251,7 +251,7 @@ class LogPage extends StatefulWidget {
class _LogPageState extends State<LogPage> {
final _form = GlobalKey<FormState>();
String rirValue = Setting.DEFAULT_RIR;
String rirValue = SlotEntry.DEFAULT_RIR;
final _repsController = TextEditingController();
final _weightController = TextEditingController();
var _detailed = false;
@@ -265,12 +265,12 @@ class _LogPageState extends State<LogPage> {
focusNode = FocusNode();
if (widget._setting.reps != null) {
_repsController.text = widget._setting.reps.toString();
if (widget._entry.reps != null) {
_repsController.text = widget._entry.reps.toString();
}
if (widget._setting.weight != null) {
_weightController.text = widget._setting.weight.toString();
if (widget._entry.weight != null) {
_weightController.text = widget._entry.weight.toString();
}
}
@@ -618,7 +618,7 @@ class _LogPageState extends State<LogPage> {
),
Center(
child: Text(
widget._setting.singleSettingRepText,
widget._entry.singleSettingRepText,
style: Theme.of(context).textTheme.headlineMedium,
textAlign: TextAlign.center,
),

View File

@@ -34,7 +34,8 @@ class _FakeResponse_0 extends _i1.SmartFake implements _i2.Response {
);
}
class _FakeStreamedResponse_1 extends _i1.SmartFake implements _i2.StreamedResponse {
class _FakeStreamedResponse_1 extends _i1.SmartFake
implements _i2.StreamedResponse {
_FakeStreamedResponse_1(
Object parent,
Invocation parentInvocation,
@@ -254,12 +255,14 @@ class MockClient extends _i1.Mock implements _i2.Client {
) as _i3.Future<_i6.Uint8List>);
@override
_i3.Future<_i2.StreamedResponse> send(_i2.BaseRequest? request) => (super.noSuchMethod(
_i3.Future<_i2.StreamedResponse> send(_i2.BaseRequest? request) =>
(super.noSuchMethod(
Invocation.method(
#send,
[request],
),
returnValue: _i3.Future<_i2.StreamedResponse>.value(_FakeStreamedResponse_1(
returnValue:
_i3.Future<_i2.StreamedResponse>.value(_FakeStreamedResponse_1(
this,
Invocation.method(
#send,

View File

@@ -34,7 +34,8 @@ import 'package:wger/providers/user.dart' as _i15;
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class
class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvider {
class _FakeWgerBaseProvider_0 extends _i1.SmartFake
implements _i2.WgerBaseProvider {
_FakeWgerBaseProvider_0(
Object parent,
Invocation parentInvocation,
@@ -87,7 +88,8 @@ class _FakeAlias_4 extends _i1.SmartFake implements _i6.Alias {
/// A class which mocks [AddExerciseProvider].
///
/// See the documentation for Mockito's code generation for more information.
class MockAddExerciseProvider extends _i1.Mock implements _i7.AddExerciseProvider {
class MockAddExerciseProvider extends _i1.Mock
implements _i7.AddExerciseProvider {
MockAddExerciseProvider() {
_i1.throwOnMissingStub(this);
}
@@ -376,7 +378,8 @@ class MockAddExerciseProvider extends _i1.Mock implements _i7.AddExerciseProvide
) as _i13.Future<void>);
@override
_i13.Future<_i4.Translation> addExerciseTranslation(_i4.Translation? exercise) =>
_i13.Future<_i4.Translation> addExerciseTranslation(
_i4.Translation? exercise) =>
(super.noSuchMethod(
Invocation.method(
#addExerciseTranslation,

View File

@@ -25,7 +25,8 @@ import 'package:wger/providers/measurement.dart' as _i4;
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class
class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvider {
class _FakeWgerBaseProvider_0 extends _i1.SmartFake
implements _i2.WgerBaseProvider {
_FakeWgerBaseProvider_0(
Object parent,
Invocation parentInvocation,
@@ -35,7 +36,8 @@ class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvi
);
}
class _FakeMeasurementCategory_1 extends _i1.SmartFake implements _i3.MeasurementCategory {
class _FakeMeasurementCategory_1 extends _i1.SmartFake
implements _i3.MeasurementCategory {
_FakeMeasurementCategory_1(
Object parent,
Invocation parentInvocation,
@@ -48,7 +50,8 @@ class _FakeMeasurementCategory_1 extends _i1.SmartFake implements _i3.Measuremen
/// A class which mocks [MeasurementProvider].
///
/// See the documentation for Mockito's code generation for more information.
class MockMeasurementProvider extends _i1.Mock implements _i4.MeasurementProvider {
class MockMeasurementProvider extends _i1.Mock
implements _i4.MeasurementProvider {
MockMeasurementProvider() {
_i1.throwOnMissingStub(this);
}
@@ -129,7 +132,8 @@ class MockMeasurementProvider extends _i1.Mock implements _i4.MeasurementProvide
) as _i5.Future<void>);
@override
_i5.Future<void> addCategory(_i3.MeasurementCategory? category) => (super.noSuchMethod(
_i5.Future<void> addCategory(_i3.MeasurementCategory? category) =>
(super.noSuchMethod(
Invocation.method(
#addCategory,
[category],

View File

@@ -29,7 +29,8 @@ import 'package:wger/providers/nutrition.dart' as _i8;
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class
class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvider {
class _FakeWgerBaseProvider_0 extends _i1.SmartFake
implements _i2.WgerBaseProvider {
_FakeWgerBaseProvider_0(
Object parent,
Invocation parentInvocation,
@@ -39,7 +40,8 @@ class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvi
);
}
class _FakeIngredientDatabase_1 extends _i1.SmartFake implements _i3.IngredientDatabase {
class _FakeIngredientDatabase_1 extends _i1.SmartFake
implements _i3.IngredientDatabase {
_FakeIngredientDatabase_1(
Object parent,
Invocation parentInvocation,
@@ -49,7 +51,8 @@ class _FakeIngredientDatabase_1 extends _i1.SmartFake implements _i3.IngredientD
);
}
class _FakeNutritionalPlan_2 extends _i1.SmartFake implements _i4.NutritionalPlan {
class _FakeNutritionalPlan_2 extends _i1.SmartFake
implements _i4.NutritionalPlan {
_FakeNutritionalPlan_2(
Object parent,
Invocation parentInvocation,
@@ -92,7 +95,8 @@ class _FakeIngredient_5 extends _i1.SmartFake implements _i7.Ingredient {
/// A class which mocks [NutritionPlansProvider].
///
/// See the documentation for Mockito's code generation for more information.
class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansProvider {
class MockNutritionPlansProvider extends _i1.Mock
implements _i8.NutritionPlansProvider {
MockNutritionPlansProvider() {
_i1.throwOnMissingStub(this);
}
@@ -202,12 +206,14 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<void>);
@override
_i9.Future<_i4.NutritionalPlan> fetchAndSetPlanSparse(int? planId) => (super.noSuchMethod(
_i9.Future<_i4.NutritionalPlan> fetchAndSetPlanSparse(int? planId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetPlanSparse,
[planId],
),
returnValue: _i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
returnValue:
_i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
this,
Invocation.method(
#fetchAndSetPlanSparse,
@@ -217,12 +223,14 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<_i4.NutritionalPlan>);
@override
_i9.Future<_i4.NutritionalPlan> fetchAndSetPlanFull(int? planId) => (super.noSuchMethod(
_i9.Future<_i4.NutritionalPlan> fetchAndSetPlanFull(int? planId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetPlanFull,
[planId],
),
returnValue: _i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
returnValue:
_i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
this,
Invocation.method(
#fetchAndSetPlanFull,
@@ -232,12 +240,14 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<_i4.NutritionalPlan>);
@override
_i9.Future<_i4.NutritionalPlan> addPlan(_i4.NutritionalPlan? planData) => (super.noSuchMethod(
_i9.Future<_i4.NutritionalPlan> addPlan(_i4.NutritionalPlan? planData) =>
(super.noSuchMethod(
Invocation.method(
#addPlan,
[planData],
),
returnValue: _i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
returnValue:
_i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
this,
Invocation.method(
#addPlan,
@@ -342,7 +352,8 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<_i6.MealItem>);
@override
_i9.Future<void> deleteMealItem(_i6.MealItem? mealItem) => (super.noSuchMethod(
_i9.Future<void> deleteMealItem(_i6.MealItem? mealItem) =>
(super.noSuchMethod(
Invocation.method(
#deleteMealItem,
[mealItem],
@@ -412,7 +423,8 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<List<_i10.IngredientApiSearchEntry>>);
@override
_i9.Future<_i7.Ingredient?> searchIngredientWithCode(String? code) => (super.noSuchMethod(
_i9.Future<_i7.Ingredient?> searchIngredientWithCode(String? code) =>
(super.noSuchMethod(
Invocation.method(
#searchIngredientWithCode,
[code],
@@ -467,7 +479,8 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<void>);
@override
_i9.Future<void> fetchAndSetLogs(_i4.NutritionalPlan? plan) => (super.noSuchMethod(
_i9.Future<void> fetchAndSetLogs(_i4.NutritionalPlan? plan) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetLogs,
[plan],

View File

@@ -29,7 +29,8 @@ import 'package:wger/providers/nutrition.dart' as _i8;
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class
class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvider {
class _FakeWgerBaseProvider_0 extends _i1.SmartFake
implements _i2.WgerBaseProvider {
_FakeWgerBaseProvider_0(
Object parent,
Invocation parentInvocation,
@@ -39,7 +40,8 @@ class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvi
);
}
class _FakeIngredientDatabase_1 extends _i1.SmartFake implements _i3.IngredientDatabase {
class _FakeIngredientDatabase_1 extends _i1.SmartFake
implements _i3.IngredientDatabase {
_FakeIngredientDatabase_1(
Object parent,
Invocation parentInvocation,
@@ -49,7 +51,8 @@ class _FakeIngredientDatabase_1 extends _i1.SmartFake implements _i3.IngredientD
);
}
class _FakeNutritionalPlan_2 extends _i1.SmartFake implements _i4.NutritionalPlan {
class _FakeNutritionalPlan_2 extends _i1.SmartFake
implements _i4.NutritionalPlan {
_FakeNutritionalPlan_2(
Object parent,
Invocation parentInvocation,
@@ -92,7 +95,8 @@ class _FakeIngredient_5 extends _i1.SmartFake implements _i7.Ingredient {
/// A class which mocks [NutritionPlansProvider].
///
/// See the documentation for Mockito's code generation for more information.
class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansProvider {
class MockNutritionPlansProvider extends _i1.Mock
implements _i8.NutritionPlansProvider {
MockNutritionPlansProvider() {
_i1.throwOnMissingStub(this);
}
@@ -202,12 +206,14 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<void>);
@override
_i9.Future<_i4.NutritionalPlan> fetchAndSetPlanSparse(int? planId) => (super.noSuchMethod(
_i9.Future<_i4.NutritionalPlan> fetchAndSetPlanSparse(int? planId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetPlanSparse,
[planId],
),
returnValue: _i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
returnValue:
_i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
this,
Invocation.method(
#fetchAndSetPlanSparse,
@@ -217,12 +223,14 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<_i4.NutritionalPlan>);
@override
_i9.Future<_i4.NutritionalPlan> fetchAndSetPlanFull(int? planId) => (super.noSuchMethod(
_i9.Future<_i4.NutritionalPlan> fetchAndSetPlanFull(int? planId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetPlanFull,
[planId],
),
returnValue: _i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
returnValue:
_i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
this,
Invocation.method(
#fetchAndSetPlanFull,
@@ -232,12 +240,14 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<_i4.NutritionalPlan>);
@override
_i9.Future<_i4.NutritionalPlan> addPlan(_i4.NutritionalPlan? planData) => (super.noSuchMethod(
_i9.Future<_i4.NutritionalPlan> addPlan(_i4.NutritionalPlan? planData) =>
(super.noSuchMethod(
Invocation.method(
#addPlan,
[planData],
),
returnValue: _i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
returnValue:
_i9.Future<_i4.NutritionalPlan>.value(_FakeNutritionalPlan_2(
this,
Invocation.method(
#addPlan,
@@ -342,7 +352,8 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<_i6.MealItem>);
@override
_i9.Future<void> deleteMealItem(_i6.MealItem? mealItem) => (super.noSuchMethod(
_i9.Future<void> deleteMealItem(_i6.MealItem? mealItem) =>
(super.noSuchMethod(
Invocation.method(
#deleteMealItem,
[mealItem],
@@ -412,7 +423,8 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<List<_i10.IngredientApiSearchEntry>>);
@override
_i9.Future<_i7.Ingredient?> searchIngredientWithCode(String? code) => (super.noSuchMethod(
_i9.Future<_i7.Ingredient?> searchIngredientWithCode(String? code) =>
(super.noSuchMethod(
Invocation.method(
#searchIngredientWithCode,
[code],
@@ -467,7 +479,8 @@ class MockNutritionPlansProvider extends _i1.Mock implements _i8.NutritionPlansP
) as _i9.Future<void>);
@override
_i9.Future<void> fetchAndSetLogs(_i4.NutritionalPlan? plan) => (super.noSuchMethod(
_i9.Future<void> fetchAndSetLogs(_i4.NutritionalPlan? plan) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetLogs,
[plan],

View File

@@ -68,7 +68,8 @@ class _FakeResponse_3 extends _i1.SmartFake implements _i3.Response {
);
}
class _FakeStreamedResponse_4 extends _i1.SmartFake implements _i3.StreamedResponse {
class _FakeStreamedResponse_4 extends _i1.SmartFake
implements _i3.StreamedResponse {
_FakeStreamedResponse_4(
Object parent,
Invocation parentInvocation,
@@ -123,7 +124,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
);
@override
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) => (super.noSuchMethod(
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) =>
(super.noSuchMethod(
Invocation.method(
#getDefaultHeaders,
[],
@@ -169,7 +171,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
#fetch,
[uri],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -194,7 +197,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
uri,
],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -210,7 +214,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
uri,
],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -275,7 +280,8 @@ class MockAuthProvider extends _i1.Mock implements _i2.AuthProvider {
);
@override
set applicationVersion(_i6.PackageInfo? _applicationVersion) => super.noSuchMethod(
set applicationVersion(_i6.PackageInfo? _applicationVersion) =>
super.noSuchMethod(
Invocation.setter(
#applicationVersion,
_applicationVersion,
@@ -409,7 +415,8 @@ class MockAuthProvider extends _i1.Mock implements _i2.AuthProvider {
#locale: locale,
},
),
returnValue: _i5.Future<Map<String, _i2.LoginActions>>.value(<String, _i2.LoginActions>{}),
returnValue: _i5.Future<Map<String, _i2.LoginActions>>.value(
<String, _i2.LoginActions>{}),
) as _i5.Future<Map<String, _i2.LoginActions>>);
@override
@@ -427,7 +434,8 @@ class MockAuthProvider extends _i1.Mock implements _i2.AuthProvider {
serverUrl,
],
),
returnValue: _i5.Future<Map<String, _i2.LoginActions>>.value(<String, _i2.LoginActions>{}),
returnValue: _i5.Future<Map<String, _i2.LoginActions>>.value(
<String, _i2.LoginActions>{}),
) as _i5.Future<Map<String, _i2.LoginActions>>);
@override
@@ -727,12 +735,14 @@ class MockClient extends _i1.Mock implements _i3.Client {
) as _i5.Future<_i10.Uint8List>);
@override
_i5.Future<_i3.StreamedResponse> send(_i3.BaseRequest? request) => (super.noSuchMethod(
_i5.Future<_i3.StreamedResponse> send(_i3.BaseRequest? request) =>
(super.noSuchMethod(
Invocation.method(
#send,
[request],
),
returnValue: _i5.Future<_i3.StreamedResponse>.value(_FakeStreamedResponse_4(
returnValue:
_i5.Future<_i3.StreamedResponse>.value(_FakeStreamedResponse_4(
this,
Invocation.method(
#send,

View File

@@ -68,7 +68,8 @@ class _FakeResponse_3 extends _i1.SmartFake implements _i2.Response {
);
}
class _FakeStreamedResponse_4 extends _i1.SmartFake implements _i2.StreamedResponse {
class _FakeStreamedResponse_4 extends _i1.SmartFake
implements _i2.StreamedResponse {
_FakeStreamedResponse_4(
Object parent,
Invocation parentInvocation,
@@ -114,7 +115,8 @@ class MockAuthProvider extends _i1.Mock implements _i3.AuthProvider {
);
@override
set applicationVersion(_i4.PackageInfo? _applicationVersion) => super.noSuchMethod(
set applicationVersion(_i4.PackageInfo? _applicationVersion) =>
super.noSuchMethod(
Invocation.setter(
#applicationVersion,
_applicationVersion,
@@ -248,7 +250,8 @@ class MockAuthProvider extends _i1.Mock implements _i3.AuthProvider {
#locale: locale,
},
),
returnValue: _i5.Future<Map<String, _i3.LoginActions>>.value(<String, _i3.LoginActions>{}),
returnValue: _i5.Future<Map<String, _i3.LoginActions>>.value(
<String, _i3.LoginActions>{}),
) as _i5.Future<Map<String, _i3.LoginActions>>);
@override
@@ -266,7 +269,8 @@ class MockAuthProvider extends _i1.Mock implements _i3.AuthProvider {
serverUrl,
],
),
returnValue: _i5.Future<Map<String, _i3.LoginActions>>.value(<String, _i3.LoginActions>{}),
returnValue: _i5.Future<Map<String, _i3.LoginActions>>.value(
<String, _i3.LoginActions>{}),
) as _i5.Future<Map<String, _i3.LoginActions>>);
@override
@@ -401,7 +405,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i8.WgerBaseProvider {
);
@override
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) => (super.noSuchMethod(
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) =>
(super.noSuchMethod(
Invocation.method(
#getDefaultHeaders,
[],
@@ -447,7 +452,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i8.WgerBaseProvider {
#fetch,
[uri],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -472,7 +478,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i8.WgerBaseProvider {
uri,
],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -488,7 +495,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i8.WgerBaseProvider {
uri,
],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -727,12 +735,14 @@ class MockClient extends _i1.Mock implements _i2.Client {
) as _i5.Future<_i10.Uint8List>);
@override
_i5.Future<_i2.StreamedResponse> send(_i2.BaseRequest? request) => (super.noSuchMethod(
_i5.Future<_i2.StreamedResponse> send(_i2.BaseRequest? request) =>
(super.noSuchMethod(
Invocation.method(
#send,
[request],
),
returnValue: _i5.Future<_i2.StreamedResponse>.value(_FakeStreamedResponse_4(
returnValue:
_i5.Future<_i2.StreamedResponse>.value(_FakeStreamedResponse_4(
this,
Invocation.method(
#send,

View File

@@ -26,7 +26,8 @@ import 'package:wger/providers/user.dart' as _i7;
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class
class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvider {
class _FakeWgerBaseProvider_0 extends _i1.SmartFake
implements _i2.WgerBaseProvider {
_FakeWgerBaseProvider_0(
Object parent,
Invocation parentInvocation,
@@ -49,7 +50,8 @@ class _FakeWeightEntry_1 extends _i1.SmartFake implements _i3.WeightEntry {
/// A class which mocks [BodyWeightProvider].
///
/// See the documentation for Mockito's code generation for more information.
class MockBodyWeightProvider extends _i1.Mock implements _i4.BodyWeightProvider {
class MockBodyWeightProvider extends _i1.Mock
implements _i4.BodyWeightProvider {
MockBodyWeightProvider() {
_i1.throwOnMissingStub(this);
}
@@ -109,7 +111,8 @@ class MockBodyWeightProvider extends _i1.Mock implements _i4.BodyWeightProvider
) as _i3.WeightEntry);
@override
_i3.WeightEntry? findByDate(DateTime? date) => (super.noSuchMethod(Invocation.method(
_i3.WeightEntry? findByDate(DateTime? date) =>
(super.noSuchMethod(Invocation.method(
#findByDate,
[date],
)) as _i3.WeightEntry?);
@@ -120,11 +123,13 @@ class MockBodyWeightProvider extends _i1.Mock implements _i4.BodyWeightProvider
#fetchAndSetEntries,
[],
),
returnValue: _i5.Future<List<_i3.WeightEntry>>.value(<_i3.WeightEntry>[]),
returnValue:
_i5.Future<List<_i3.WeightEntry>>.value(<_i3.WeightEntry>[]),
) as _i5.Future<List<_i3.WeightEntry>>);
@override
_i5.Future<_i3.WeightEntry> addEntry(_i3.WeightEntry? entry) => (super.noSuchMethod(
_i5.Future<_i3.WeightEntry> addEntry(_i3.WeightEntry? entry) =>
(super.noSuchMethod(
Invocation.method(
#addEntry,
[entry],

View File

@@ -71,7 +71,8 @@ class _FakeResponse_3 extends _i1.SmartFake implements _i3.Response {
);
}
class _FakeWgerBaseProvider_4 extends _i1.SmartFake implements _i4.WgerBaseProvider {
class _FakeWgerBaseProvider_4 extends _i1.SmartFake
implements _i4.WgerBaseProvider {
_FakeWgerBaseProvider_4(
Object parent,
Invocation parentInvocation,
@@ -81,7 +82,8 @@ class _FakeWgerBaseProvider_4 extends _i1.SmartFake implements _i4.WgerBaseProvi
);
}
class _FakeExerciseDatabase_5 extends _i1.SmartFake implements _i5.ExerciseDatabase {
class _FakeExerciseDatabase_5 extends _i1.SmartFake
implements _i5.ExerciseDatabase {
_FakeExerciseDatabase_5(
Object parent,
Invocation parentInvocation,
@@ -101,7 +103,8 @@ class _FakeExercise_6 extends _i1.SmartFake implements _i6.Exercise {
);
}
class _FakeExerciseCategory_7 extends _i1.SmartFake implements _i7.ExerciseCategory {
class _FakeExerciseCategory_7 extends _i1.SmartFake
implements _i7.ExerciseCategory {
_FakeExerciseCategory_7(
Object parent,
Invocation parentInvocation,
@@ -186,7 +189,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
);
@override
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) => (super.noSuchMethod(
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) =>
(super.noSuchMethod(
Invocation.method(
#getDefaultHeaders,
[],
@@ -232,7 +236,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
#fetch,
[uri],
),
returnValue: _i11.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i11.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i11.Future<Map<String, dynamic>>);
@override
@@ -257,7 +262,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
uri,
],
),
returnValue: _i11.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i11.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i11.Future<Map<String, dynamic>>);
@override
@@ -273,7 +279,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
uri,
],
),
returnValue: _i11.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i11.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i11.Future<Map<String, dynamic>>);
@override
@@ -359,7 +366,8 @@ class MockExercisesProvider extends _i1.Mock implements _i12.ExercisesProvider {
) as List<_i6.Exercise>);
@override
set filteredExercises(List<_i6.Exercise>? newFilteredExercises) => super.noSuchMethod(
set filteredExercises(List<_i6.Exercise>? newFilteredExercises) =>
super.noSuchMethod(
Invocation.setter(
#filteredExercises,
newFilteredExercises,
@@ -368,7 +376,8 @@ class MockExercisesProvider extends _i1.Mock implements _i12.ExercisesProvider {
);
@override
Map<int, List<_i6.Exercise>> get exerciseBasesByVariation => (super.noSuchMethod(
Map<int, List<_i6.Exercise>> get exerciseBasesByVariation =>
(super.noSuchMethod(
Invocation.getter(#exerciseBasesByVariation),
returnValue: <int, List<_i6.Exercise>>{},
) as Map<int, List<_i6.Exercise>>);
@@ -580,7 +589,8 @@ class MockExercisesProvider extends _i1.Mock implements _i12.ExercisesProvider {
) as _i11.Future<void>);
@override
_i11.Future<_i6.Exercise> fetchAndSetExercise(int? exerciseId) => (super.noSuchMethod(
_i11.Future<_i6.Exercise> fetchAndSetExercise(int? exerciseId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetExercise,
[exerciseId],
@@ -620,7 +630,8 @@ class MockExercisesProvider extends _i1.Mock implements _i12.ExercisesProvider {
) as _i11.Future<_i6.Exercise>);
@override
_i11.Future<void> initCacheTimesLocalPrefs({dynamic forceInit = false}) => (super.noSuchMethod(
_i11.Future<void> initCacheTimesLocalPrefs({dynamic forceInit = false}) =>
(super.noSuchMethod(
Invocation.method(
#initCacheTimesLocalPrefs,
[],
@@ -666,7 +677,8 @@ class MockExercisesProvider extends _i1.Mock implements _i12.ExercisesProvider {
) as _i11.Future<void>);
@override
_i11.Future<void> updateExerciseCache(_i5.ExerciseDatabase? database) => (super.noSuchMethod(
_i11.Future<void> updateExerciseCache(_i5.ExerciseDatabase? database) =>
(super.noSuchMethod(
Invocation.method(
#updateExerciseCache,
[database],
@@ -676,7 +688,8 @@ class MockExercisesProvider extends _i1.Mock implements _i12.ExercisesProvider {
) as _i11.Future<void>);
@override
_i11.Future<void> fetchAndSetMuscles(_i5.ExerciseDatabase? database) => (super.noSuchMethod(
_i11.Future<void> fetchAndSetMuscles(_i5.ExerciseDatabase? database) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetMuscles,
[database],
@@ -686,7 +699,8 @@ class MockExercisesProvider extends _i1.Mock implements _i12.ExercisesProvider {
) as _i11.Future<void>);
@override
_i11.Future<void> fetchAndSetCategories(_i5.ExerciseDatabase? database) => (super.noSuchMethod(
_i11.Future<void> fetchAndSetCategories(_i5.ExerciseDatabase? database) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetCategories,
[database],
@@ -696,7 +710,8 @@ class MockExercisesProvider extends _i1.Mock implements _i12.ExercisesProvider {
) as _i11.Future<void>);
@override
_i11.Future<void> fetchAndSetLanguages(_i5.ExerciseDatabase? database) => (super.noSuchMethod(
_i11.Future<void> fetchAndSetLanguages(_i5.ExerciseDatabase? database) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetLanguages,
[database],
@@ -706,7 +721,8 @@ class MockExercisesProvider extends _i1.Mock implements _i12.ExercisesProvider {
) as _i11.Future<void>);
@override
_i11.Future<void> fetchAndSetEquipments(_i5.ExerciseDatabase? database) => (super.noSuchMethod(
_i11.Future<void> fetchAndSetEquipments(_i5.ExerciseDatabase? database) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetEquipments,
[database],

View File

@@ -23,7 +23,7 @@ import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:provider/provider.dart';
import 'package:wger/models/workouts/repetition_unit.dart';
import 'package:wger/models/workouts/setting.dart';
import 'package:wger/models/workouts/slot_entry.dart';
import 'package:wger/providers/workout_plans.dart';
import 'package:wger/screens/workout_plan_screen.dart';
import 'package:wger/widgets/workouts/forms.dart';
@@ -38,15 +38,17 @@ void main() {
const unit2 = RepetitionUnit(id: 2, name: 'another name');
const unit3 = RepetitionUnit(id: 3, name: 'this is repetition number 3');
final setting1 = Setting(
setId: 1,
final setting1 = SlotEntry(
slotId: 1,
type: 'normal',
order: 1,
exerciseId: 1,
repetitionUnitId: 1,
repetitionRounding: 0.25,
reps: 2,
weightUnitId: 1,
weightRounding: 0.25,
comment: 'comment',
rir: '1',
);
setting1.repetitionUnitObj = unit1;

View File

@@ -15,8 +15,8 @@ import 'package:wger/models/workouts/log.dart' as _i10;
import 'package:wger/models/workouts/repetition_unit.dart' as _i4;
import 'package:wger/models/workouts/routine.dart' as _i5;
import 'package:wger/models/workouts/session.dart' as _i9;
import 'package:wger/models/workouts/set.dart' as _i7;
import 'package:wger/models/workouts/setting.dart' as _i8;
import 'package:wger/models/workouts/slot.dart' as _i7;
import 'package:wger/models/workouts/slot_entry.dart' as _i8;
import 'package:wger/models/workouts/weight_unit.dart' as _i3;
import 'package:wger/providers/base_provider.dart' as _i2;
import 'package:wger/providers/workout_plans.dart' as _i11;
@@ -34,7 +34,8 @@ import 'package:wger/providers/workout_plans.dart' as _i11;
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class
class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvider {
class _FakeWgerBaseProvider_0 extends _i1.SmartFake
implements _i2.WgerBaseProvider {
_FakeWgerBaseProvider_0(
Object parent,
Invocation parentInvocation,
@@ -54,7 +55,8 @@ class _FakeWeightUnit_1 extends _i1.SmartFake implements _i3.WeightUnit {
);
}
class _FakeRepetitionUnit_2 extends _i1.SmartFake implements _i4.RepetitionUnit {
class _FakeRepetitionUnit_2 extends _i1.SmartFake
implements _i4.RepetitionUnit {
_FakeRepetitionUnit_2(
Object parent,
Invocation parentInvocation,
@@ -84,8 +86,8 @@ class _FakeDay_4 extends _i1.SmartFake implements _i6.Day {
);
}
class _FakeSet_5 extends _i1.SmartFake implements _i7.Set {
_FakeSet_5(
class _FakeSlot_5 extends _i1.SmartFake implements _i7.Slot {
_FakeSlot_5(
Object parent,
Invocation parentInvocation,
) : super(
@@ -94,8 +96,8 @@ class _FakeSet_5 extends _i1.SmartFake implements _i7.Set {
);
}
class _FakeSetting_6 extends _i1.SmartFake implements _i8.Setting {
_FakeSetting_6(
class _FakeSlotEntry_6 extends _i1.SmartFake implements _i8.SlotEntry {
_FakeSlotEntry_6(
Object parent,
Invocation parentInvocation,
) : super(
@@ -104,7 +106,8 @@ class _FakeSetting_6 extends _i1.SmartFake implements _i8.Setting {
);
}
class _FakeWorkoutSession_7 extends _i1.SmartFake implements _i9.WorkoutSession {
class _FakeWorkoutSession_7 extends _i1.SmartFake
implements _i9.WorkoutSession {
_FakeWorkoutSession_7(
Object parent,
Invocation parentInvocation,
@@ -127,7 +130,8 @@ class _FakeLog_8 extends _i1.SmartFake implements _i10.Log {
/// A class which mocks [WorkoutPlansProvider].
///
/// See the documentation for Mockito's code generation for more information.
class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProvider {
class MockWorkoutPlansProvider extends _i1.Mock
implements _i11.WorkoutPlansProvider {
MockWorkoutPlansProvider() {
_i1.throwOnMissingStub(this);
}
@@ -264,7 +268,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<_i5.Routine> fetchAndSetPlanSparse(int? planId) => (super.noSuchMethod(
_i12.Future<_i5.Routine> fetchAndSetPlanSparse(int? planId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetPlanSparse,
[planId],
@@ -279,7 +284,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<_i5.Routine>);
@override
_i12.Future<_i5.Routine> fetchAndSetWorkoutPlanFull(int? workoutId) => (super.noSuchMethod(
_i12.Future<_i5.Routine> fetchAndSetWorkoutPlanFull(int? workoutId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetWorkoutPlanFull,
[workoutId],
@@ -294,7 +300,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<_i5.Routine>);
@override
_i12.Future<_i5.Routine> addWorkout(_i5.Routine? workout) => (super.noSuchMethod(
_i12.Future<_i5.Routine> addWorkout(_i5.Routine? workout) =>
(super.noSuchMethod(
Invocation.method(
#addWorkout,
[workout],
@@ -341,7 +348,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
base,
],
),
returnValue: _i12.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i12.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i12.Future<Map<String, dynamic>>);
@override
@@ -420,22 +428,22 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<_i7.Set> addSet(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<_i7.Slot> addSet(_i7.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#addSet,
[workoutSet],
),
returnValue: _i12.Future<_i7.Set>.value(_FakeSet_5(
returnValue: _i12.Future<_i7.Slot>.value(_FakeSlot_5(
this,
Invocation.method(
#addSet,
[workoutSet],
),
)),
) as _i12.Future<_i7.Set>);
) as _i12.Future<_i7.Slot>);
@override
_i12.Future<void> editSet(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<void> editSet(_i7.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#editSet,
[workoutSet],
@@ -445,8 +453,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<List<_i7.Set>> reorderSets(
List<_i7.Set>? sets,
_i12.Future<List<_i7.Slot>> reorderSets(
List<_i7.Slot>? sets,
int? startIndex,
) =>
(super.noSuchMethod(
@@ -457,11 +465,12 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
startIndex,
],
),
returnValue: _i12.Future<List<_i7.Set>>.value(<_i7.Set>[]),
) as _i12.Future<List<_i7.Set>>);
returnValue: _i12.Future<List<_i7.Slot>>.value(<_i7.Slot>[]),
) as _i12.Future<List<_i7.Slot>>);
@override
_i12.Future<void> fetchComputedSettings(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<void> fetchComputedSettings(_i7.Slot? workoutSet) =>
(super.noSuchMethod(
Invocation.method(
#fetchComputedSettings,
[workoutSet],
@@ -472,7 +481,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
@override
_i12.Future<String> fetchSmartText(
_i7.Set? workoutSet,
_i7.Slot? workoutSet,
_i14.Translation? exercise,
) =>
(super.noSuchMethod(
@@ -496,7 +505,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<String>);
@override
_i12.Future<void> deleteSet(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<void> deleteSet(_i7.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#deleteSet,
[workoutSet],
@@ -506,19 +515,20 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<_i8.Setting> addSetting(_i8.Setting? workoutSetting) => (super.noSuchMethod(
_i12.Future<_i8.SlotEntry> addSetting(_i8.SlotEntry? workoutSetting) =>
(super.noSuchMethod(
Invocation.method(
#addSetting,
[workoutSetting],
),
returnValue: _i12.Future<_i8.Setting>.value(_FakeSetting_6(
returnValue: _i12.Future<_i8.SlotEntry>.value(_FakeSlotEntry_6(
this,
Invocation.method(
#addSetting,
[workoutSetting],
),
)),
) as _i12.Future<_i8.Setting>);
) as _i12.Future<_i8.SlotEntry>);
@override
_i12.Future<dynamic> fetchSessionData() => (super.noSuchMethod(
@@ -530,12 +540,14 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<dynamic>);
@override
_i12.Future<_i9.WorkoutSession> addSession(_i9.WorkoutSession? session) => (super.noSuchMethod(
_i12.Future<_i9.WorkoutSession> addSession(_i9.WorkoutSession? session) =>
(super.noSuchMethod(
Invocation.method(
#addSession,
[session],
),
returnValue: _i12.Future<_i9.WorkoutSession>.value(_FakeWorkoutSession_7(
returnValue:
_i12.Future<_i9.WorkoutSession>.value(_FakeWorkoutSession_7(
this,
Invocation.method(
#addSession,

View File

@@ -24,8 +24,8 @@ void main() {
group('Test the getSmartTextRepr method for a set', () {
test('Repetitions and weigh units', () {
final workout = getWorkout();
final set = workout.days.first.sets.first;
final exercise1 = set.exerciseBasesObj[0];
final set = workout.days.first.slots.first;
final exercise1 = set.exercisesObj[0];
expect(set.getSmartTextRepr(exercise1), '6 × 80 kg (3 RiR)');
});

View File

@@ -18,7 +18,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:wger/models/workouts/repetition_unit.dart';
import 'package:wger/models/workouts/setting.dart';
import 'package:wger/models/workouts/slot_entry.dart';
import 'package:wger/models/workouts/weight_unit.dart';
void main() {
@@ -27,65 +27,60 @@ void main() {
const repUnit = RepetitionUnit(id: 1, name: 'mol');
const weightUnit = WeightUnit(id: 1, name: 'mg');
final setting = Setting.empty();
setting.reps = 2;
setting.weight = 30;
setting.rir = '';
setting.repetitionUnit = repUnit;
setting.weightUnit = weightUnit;
expect(setting.singleSettingRepText, '2 × 30 mg');
final entry = SlotEntry.empty();
entry.reps = 2;
entry.weight = 30;
entry.repetitionUnit = repUnit;
entry.weightUnit = weightUnit;
expect(entry.singleSettingRepText, '2 × 30 mg');
});
test('Default rep and weight units', () {
const repUnit = RepetitionUnit(id: 1, name: 'mol');
const weightUnit = WeightUnit(id: 1, name: 'mg');
final setting = Setting.empty();
setting.reps = 2;
setting.weight = 30;
setting.rir = '1.5';
setting.repetitionUnit = repUnit;
setting.weightUnit = weightUnit;
expect(setting.singleSettingRepText, '2 × 30 mg \n (1.5 RiR)');
final entry = SlotEntry.empty();
entry.reps = 2;
entry.weight = 30;
entry.repetitionUnit = repUnit;
entry.weightUnit = weightUnit;
expect(entry.singleSettingRepText, '2 × 30 mg \n (1.5 RiR)');
});
test('No weight, default rep and weight units', () {
const repUnit = RepetitionUnit(id: 1, name: 'mol');
const weightUnit = WeightUnit(id: 1, name: 'mg');
final setting = Setting.empty();
setting.reps = 2;
setting.weight = null;
setting.rir = '1.5';
setting.repetitionUnit = repUnit;
setting.weightUnit = weightUnit;
expect(setting.singleSettingRepText, '2 mol \n (1.5 RiR)');
final entry = SlotEntry.empty();
entry.reps = 2;
entry.weight = null;
entry.repetitionUnit = repUnit;
entry.weightUnit = weightUnit;
expect(entry.singleSettingRepText, '2 mol \n (1.5 RiR)');
});
test('Custom rep and weight units, no RiR', () {
const repUnit = RepetitionUnit(id: 2, name: 'mol');
const weightUnit = WeightUnit(id: 2, name: 'mg');
final setting = Setting.empty();
setting.reps = 2;
setting.weight = 30;
setting.rir = '';
setting.repetitionUnit = repUnit;
setting.weightUnit = weightUnit;
expect(setting.singleSettingRepText, '2 mol × 30 mg');
final slotEntry = SlotEntry.empty();
slotEntry.reps = 2;
slotEntry.weight = 30;
slotEntry.repetitionUnit = repUnit;
slotEntry.weightUnit = weightUnit;
expect(slotEntry.singleSettingRepText, '2 mol × 30 mg');
});
test('Custom rep and weight units, RiR', () {
const repUnit = RepetitionUnit(id: 2, name: 'mol');
const weightUnit = WeightUnit(id: 2, name: 'mg');
final setting = Setting.empty();
setting.reps = 2;
setting.weight = 30;
setting.rir = '3';
setting.repetitionUnit = repUnit;
setting.weightUnit = weightUnit;
expect(setting.singleSettingRepText, '2 mol × 30 mg \n (3 RiR)');
final slotEntry = SlotEntry.empty();
slotEntry.reps = 2;
slotEntry.weight = 30;
slotEntry.repetitionUnit = repUnit;
slotEntry.weightUnit = weightUnit;
expect(slotEntry.singleSettingRepText, '2 mol × 30 mg \n (3 RiR)');
});
});
}

View File

@@ -22,7 +22,7 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:provider/provider.dart';
import 'package:wger/models/workouts/setting.dart';
import 'package:wger/models/workouts/slot_entry.dart';
import 'package:wger/models/workouts/weight_unit.dart';
import 'package:wger/providers/body_weight.dart';
import 'package:wger/providers/workout_plans.dart';
@@ -39,15 +39,17 @@ void main() {
const unit2 = WeightUnit(id: 2, name: 'donkeys');
const unit3 = WeightUnit(id: 3, name: 'plates');
final setting1 = Setting(
setId: 1,
final setting1 = SlotEntry(
slotId: 1,
type: 'normal',
order: 1,
exerciseId: 1,
repetitionUnitId: 1,
repetitionRounding: 0.25,
reps: 2,
weightUnitId: 1,
weightRounding: 0.25,
comment: 'comment',
rir: '1',
);
setting1.weightUnitObj = unit1;

View File

@@ -24,7 +24,8 @@ import 'package:wger/providers/body_weight.dart' as _i4;
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class
class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvider {
class _FakeWgerBaseProvider_0 extends _i1.SmartFake
implements _i2.WgerBaseProvider {
_FakeWgerBaseProvider_0(
Object parent,
Invocation parentInvocation,
@@ -47,7 +48,8 @@ class _FakeWeightEntry_1 extends _i1.SmartFake implements _i3.WeightEntry {
/// A class which mocks [BodyWeightProvider].
///
/// See the documentation for Mockito's code generation for more information.
class MockBodyWeightProvider extends _i1.Mock implements _i4.BodyWeightProvider {
class MockBodyWeightProvider extends _i1.Mock
implements _i4.BodyWeightProvider {
MockBodyWeightProvider() {
_i1.throwOnMissingStub(this);
}
@@ -107,7 +109,8 @@ class MockBodyWeightProvider extends _i1.Mock implements _i4.BodyWeightProvider
) as _i3.WeightEntry);
@override
_i3.WeightEntry? findByDate(DateTime? date) => (super.noSuchMethod(Invocation.method(
_i3.WeightEntry? findByDate(DateTime? date) =>
(super.noSuchMethod(Invocation.method(
#findByDate,
[date],
)) as _i3.WeightEntry?);
@@ -118,11 +121,13 @@ class MockBodyWeightProvider extends _i1.Mock implements _i4.BodyWeightProvider
#fetchAndSetEntries,
[],
),
returnValue: _i5.Future<List<_i3.WeightEntry>>.value(<_i3.WeightEntry>[]),
returnValue:
_i5.Future<List<_i3.WeightEntry>>.value(<_i3.WeightEntry>[]),
) as _i5.Future<List<_i3.WeightEntry>>);
@override
_i5.Future<_i3.WeightEntry> addEntry(_i3.WeightEntry? entry) => (super.noSuchMethod(
_i5.Future<_i3.WeightEntry> addEntry(_i3.WeightEntry? entry) =>
(super.noSuchMethod(
Invocation.method(
#addEntry,
[entry],

View File

@@ -15,8 +15,8 @@ import 'package:wger/models/workouts/log.dart' as _i10;
import 'package:wger/models/workouts/repetition_unit.dart' as _i4;
import 'package:wger/models/workouts/routine.dart' as _i5;
import 'package:wger/models/workouts/session.dart' as _i9;
import 'package:wger/models/workouts/set.dart' as _i7;
import 'package:wger/models/workouts/setting.dart' as _i8;
import 'package:wger/models/workouts/slot.dart' as _i7;
import 'package:wger/models/workouts/slot_entry.dart' as _i8;
import 'package:wger/models/workouts/weight_unit.dart' as _i3;
import 'package:wger/providers/base_provider.dart' as _i2;
import 'package:wger/providers/workout_plans.dart' as _i11;
@@ -34,7 +34,8 @@ import 'package:wger/providers/workout_plans.dart' as _i11;
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class
class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvider {
class _FakeWgerBaseProvider_0 extends _i1.SmartFake
implements _i2.WgerBaseProvider {
_FakeWgerBaseProvider_0(
Object parent,
Invocation parentInvocation,
@@ -54,7 +55,8 @@ class _FakeWeightUnit_1 extends _i1.SmartFake implements _i3.WeightUnit {
);
}
class _FakeRepetitionUnit_2 extends _i1.SmartFake implements _i4.RepetitionUnit {
class _FakeRepetitionUnit_2 extends _i1.SmartFake
implements _i4.RepetitionUnit {
_FakeRepetitionUnit_2(
Object parent,
Invocation parentInvocation,
@@ -84,8 +86,8 @@ class _FakeDay_4 extends _i1.SmartFake implements _i6.Day {
);
}
class _FakeSet_5 extends _i1.SmartFake implements _i7.Set {
_FakeSet_5(
class _FakeSlot_5 extends _i1.SmartFake implements _i7.Slot {
_FakeSlot_5(
Object parent,
Invocation parentInvocation,
) : super(
@@ -94,8 +96,8 @@ class _FakeSet_5 extends _i1.SmartFake implements _i7.Set {
);
}
class _FakeSetting_6 extends _i1.SmartFake implements _i8.Setting {
_FakeSetting_6(
class _FakeSlotEntry_6 extends _i1.SmartFake implements _i8.SlotEntry {
_FakeSlotEntry_6(
Object parent,
Invocation parentInvocation,
) : super(
@@ -104,7 +106,8 @@ class _FakeSetting_6 extends _i1.SmartFake implements _i8.Setting {
);
}
class _FakeWorkoutSession_7 extends _i1.SmartFake implements _i9.WorkoutSession {
class _FakeWorkoutSession_7 extends _i1.SmartFake
implements _i9.WorkoutSession {
_FakeWorkoutSession_7(
Object parent,
Invocation parentInvocation,
@@ -127,7 +130,8 @@ class _FakeLog_8 extends _i1.SmartFake implements _i10.Log {
/// A class which mocks [WorkoutPlansProvider].
///
/// See the documentation for Mockito's code generation for more information.
class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProvider {
class MockWorkoutPlansProvider extends _i1.Mock
implements _i11.WorkoutPlansProvider {
MockWorkoutPlansProvider() {
_i1.throwOnMissingStub(this);
}
@@ -264,7 +268,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<_i5.Routine> fetchAndSetPlanSparse(int? planId) => (super.noSuchMethod(
_i12.Future<_i5.Routine> fetchAndSetPlanSparse(int? planId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetPlanSparse,
[planId],
@@ -279,7 +284,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<_i5.Routine>);
@override
_i12.Future<_i5.Routine> fetchAndSetWorkoutPlanFull(int? workoutId) => (super.noSuchMethod(
_i12.Future<_i5.Routine> fetchAndSetWorkoutPlanFull(int? workoutId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetWorkoutPlanFull,
[workoutId],
@@ -294,7 +300,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<_i5.Routine>);
@override
_i12.Future<_i5.Routine> addWorkout(_i5.Routine? workout) => (super.noSuchMethod(
_i12.Future<_i5.Routine> addWorkout(_i5.Routine? workout) =>
(super.noSuchMethod(
Invocation.method(
#addWorkout,
[workout],
@@ -341,7 +348,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
base,
],
),
returnValue: _i12.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i12.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i12.Future<Map<String, dynamic>>);
@override
@@ -420,22 +428,22 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<_i7.Set> addSet(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<_i7.Slot> addSet(_i7.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#addSet,
[workoutSet],
),
returnValue: _i12.Future<_i7.Set>.value(_FakeSet_5(
returnValue: _i12.Future<_i7.Slot>.value(_FakeSlot_5(
this,
Invocation.method(
#addSet,
[workoutSet],
),
)),
) as _i12.Future<_i7.Set>);
) as _i12.Future<_i7.Slot>);
@override
_i12.Future<void> editSet(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<void> editSet(_i7.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#editSet,
[workoutSet],
@@ -445,8 +453,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<List<_i7.Set>> reorderSets(
List<_i7.Set>? sets,
_i12.Future<List<_i7.Slot>> reorderSets(
List<_i7.Slot>? sets,
int? startIndex,
) =>
(super.noSuchMethod(
@@ -457,11 +465,12 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
startIndex,
],
),
returnValue: _i12.Future<List<_i7.Set>>.value(<_i7.Set>[]),
) as _i12.Future<List<_i7.Set>>);
returnValue: _i12.Future<List<_i7.Slot>>.value(<_i7.Slot>[]),
) as _i12.Future<List<_i7.Slot>>);
@override
_i12.Future<void> fetchComputedSettings(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<void> fetchComputedSettings(_i7.Slot? workoutSet) =>
(super.noSuchMethod(
Invocation.method(
#fetchComputedSettings,
[workoutSet],
@@ -472,7 +481,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
@override
_i12.Future<String> fetchSmartText(
_i7.Set? workoutSet,
_i7.Slot? workoutSet,
_i14.Translation? exercise,
) =>
(super.noSuchMethod(
@@ -496,7 +505,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<String>);
@override
_i12.Future<void> deleteSet(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<void> deleteSet(_i7.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#deleteSet,
[workoutSet],
@@ -506,19 +515,20 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<_i8.Setting> addSetting(_i8.Setting? workoutSetting) => (super.noSuchMethod(
_i12.Future<_i8.SlotEntry> addSetting(_i8.SlotEntry? workoutSetting) =>
(super.noSuchMethod(
Invocation.method(
#addSetting,
[workoutSetting],
),
returnValue: _i12.Future<_i8.Setting>.value(_FakeSetting_6(
returnValue: _i12.Future<_i8.SlotEntry>.value(_FakeSlotEntry_6(
this,
Invocation.method(
#addSetting,
[workoutSetting],
),
)),
) as _i12.Future<_i8.Setting>);
) as _i12.Future<_i8.SlotEntry>);
@override
_i12.Future<dynamic> fetchSessionData() => (super.noSuchMethod(
@@ -530,12 +540,14 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<dynamic>);
@override
_i12.Future<_i9.WorkoutSession> addSession(_i9.WorkoutSession? session) => (super.noSuchMethod(
_i12.Future<_i9.WorkoutSession> addSession(_i9.WorkoutSession? session) =>
(super.noSuchMethod(
Invocation.method(
#addSession,
[session],
),
returnValue: _i12.Future<_i9.WorkoutSession>.value(_FakeWorkoutSession_7(
returnValue:
_i12.Future<_i9.WorkoutSession>.value(_FakeWorkoutSession_7(
this,
Invocation.method(
#addSession,

View File

@@ -15,8 +15,8 @@ import 'package:wger/models/workouts/log.dart' as _i10;
import 'package:wger/models/workouts/repetition_unit.dart' as _i4;
import 'package:wger/models/workouts/routine.dart' as _i5;
import 'package:wger/models/workouts/session.dart' as _i9;
import 'package:wger/models/workouts/set.dart' as _i7;
import 'package:wger/models/workouts/setting.dart' as _i8;
import 'package:wger/models/workouts/slot.dart' as _i7;
import 'package:wger/models/workouts/slot_entry.dart' as _i8;
import 'package:wger/models/workouts/weight_unit.dart' as _i3;
import 'package:wger/providers/base_provider.dart' as _i2;
import 'package:wger/providers/workout_plans.dart' as _i11;
@@ -34,7 +34,8 @@ import 'package:wger/providers/workout_plans.dart' as _i11;
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class
class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvider {
class _FakeWgerBaseProvider_0 extends _i1.SmartFake
implements _i2.WgerBaseProvider {
_FakeWgerBaseProvider_0(
Object parent,
Invocation parentInvocation,
@@ -54,7 +55,8 @@ class _FakeWeightUnit_1 extends _i1.SmartFake implements _i3.WeightUnit {
);
}
class _FakeRepetitionUnit_2 extends _i1.SmartFake implements _i4.RepetitionUnit {
class _FakeRepetitionUnit_2 extends _i1.SmartFake
implements _i4.RepetitionUnit {
_FakeRepetitionUnit_2(
Object parent,
Invocation parentInvocation,
@@ -84,8 +86,8 @@ class _FakeDay_4 extends _i1.SmartFake implements _i6.Day {
);
}
class _FakeSet_5 extends _i1.SmartFake implements _i7.Set {
_FakeSet_5(
class _FakeSlot_5 extends _i1.SmartFake implements _i7.Slot {
_FakeSlot_5(
Object parent,
Invocation parentInvocation,
) : super(
@@ -94,8 +96,8 @@ class _FakeSet_5 extends _i1.SmartFake implements _i7.Set {
);
}
class _FakeSetting_6 extends _i1.SmartFake implements _i8.Setting {
_FakeSetting_6(
class _FakeSlotEntry_6 extends _i1.SmartFake implements _i8.SlotEntry {
_FakeSlotEntry_6(
Object parent,
Invocation parentInvocation,
) : super(
@@ -104,7 +106,8 @@ class _FakeSetting_6 extends _i1.SmartFake implements _i8.Setting {
);
}
class _FakeWorkoutSession_7 extends _i1.SmartFake implements _i9.WorkoutSession {
class _FakeWorkoutSession_7 extends _i1.SmartFake
implements _i9.WorkoutSession {
_FakeWorkoutSession_7(
Object parent,
Invocation parentInvocation,
@@ -127,7 +130,8 @@ class _FakeLog_8 extends _i1.SmartFake implements _i10.Log {
/// A class which mocks [WorkoutPlansProvider].
///
/// See the documentation for Mockito's code generation for more information.
class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProvider {
class MockWorkoutPlansProvider extends _i1.Mock
implements _i11.WorkoutPlansProvider {
MockWorkoutPlansProvider() {
_i1.throwOnMissingStub(this);
}
@@ -264,7 +268,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<_i5.Routine> fetchAndSetPlanSparse(int? planId) => (super.noSuchMethod(
_i12.Future<_i5.Routine> fetchAndSetPlanSparse(int? planId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetPlanSparse,
[planId],
@@ -279,7 +284,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<_i5.Routine>);
@override
_i12.Future<_i5.Routine> fetchAndSetWorkoutPlanFull(int? workoutId) => (super.noSuchMethod(
_i12.Future<_i5.Routine> fetchAndSetWorkoutPlanFull(int? workoutId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetWorkoutPlanFull,
[workoutId],
@@ -294,7 +300,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<_i5.Routine>);
@override
_i12.Future<_i5.Routine> addWorkout(_i5.Routine? workout) => (super.noSuchMethod(
_i12.Future<_i5.Routine> addWorkout(_i5.Routine? workout) =>
(super.noSuchMethod(
Invocation.method(
#addWorkout,
[workout],
@@ -341,7 +348,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
base,
],
),
returnValue: _i12.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i12.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i12.Future<Map<String, dynamic>>);
@override
@@ -420,22 +428,22 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<_i7.Set> addSet(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<_i7.Slot> addSet(_i7.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#addSet,
[workoutSet],
),
returnValue: _i12.Future<_i7.Set>.value(_FakeSet_5(
returnValue: _i12.Future<_i7.Slot>.value(_FakeSlot_5(
this,
Invocation.method(
#addSet,
[workoutSet],
),
)),
) as _i12.Future<_i7.Set>);
) as _i12.Future<_i7.Slot>);
@override
_i12.Future<void> editSet(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<void> editSet(_i7.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#editSet,
[workoutSet],
@@ -445,8 +453,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<List<_i7.Set>> reorderSets(
List<_i7.Set>? sets,
_i12.Future<List<_i7.Slot>> reorderSets(
List<_i7.Slot>? sets,
int? startIndex,
) =>
(super.noSuchMethod(
@@ -457,11 +465,12 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
startIndex,
],
),
returnValue: _i12.Future<List<_i7.Set>>.value(<_i7.Set>[]),
) as _i12.Future<List<_i7.Set>>);
returnValue: _i12.Future<List<_i7.Slot>>.value(<_i7.Slot>[]),
) as _i12.Future<List<_i7.Slot>>);
@override
_i12.Future<void> fetchComputedSettings(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<void> fetchComputedSettings(_i7.Slot? workoutSet) =>
(super.noSuchMethod(
Invocation.method(
#fetchComputedSettings,
[workoutSet],
@@ -472,7 +481,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
@override
_i12.Future<String> fetchSmartText(
_i7.Set? workoutSet,
_i7.Slot? workoutSet,
_i14.Translation? exercise,
) =>
(super.noSuchMethod(
@@ -496,7 +505,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<String>);
@override
_i12.Future<void> deleteSet(_i7.Set? workoutSet) => (super.noSuchMethod(
_i12.Future<void> deleteSet(_i7.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#deleteSet,
[workoutSet],
@@ -506,19 +515,20 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<void>);
@override
_i12.Future<_i8.Setting> addSetting(_i8.Setting? workoutSetting) => (super.noSuchMethod(
_i12.Future<_i8.SlotEntry> addSetting(_i8.SlotEntry? workoutSetting) =>
(super.noSuchMethod(
Invocation.method(
#addSetting,
[workoutSetting],
),
returnValue: _i12.Future<_i8.Setting>.value(_FakeSetting_6(
returnValue: _i12.Future<_i8.SlotEntry>.value(_FakeSlotEntry_6(
this,
Invocation.method(
#addSetting,
[workoutSetting],
),
)),
) as _i12.Future<_i8.Setting>);
) as _i12.Future<_i8.SlotEntry>);
@override
_i12.Future<dynamic> fetchSessionData() => (super.noSuchMethod(
@@ -530,12 +540,14 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i11.WorkoutPlansProv
) as _i12.Future<dynamic>);
@override
_i12.Future<_i9.WorkoutSession> addSession(_i9.WorkoutSession? session) => (super.noSuchMethod(
_i12.Future<_i9.WorkoutSession> addSession(_i9.WorkoutSession? session) =>
(super.noSuchMethod(
Invocation.method(
#addSession,
[session],
),
returnValue: _i12.Future<_i9.WorkoutSession>.value(_FakeWorkoutSession_7(
returnValue:
_i12.Future<_i9.WorkoutSession>.value(_FakeWorkoutSession_7(
this,
Invocation.method(
#addSession,

View File

@@ -108,7 +108,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
);
@override
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) => (super.noSuchMethod(
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) =>
(super.noSuchMethod(
Invocation.method(
#getDefaultHeaders,
[],
@@ -154,7 +155,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
#fetch,
[uri],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -179,7 +181,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
uri,
],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -195,7 +198,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
uri,
],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override

View File

@@ -108,7 +108,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
);
@override
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) => (super.noSuchMethod(
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) =>
(super.noSuchMethod(
Invocation.method(
#getDefaultHeaders,
[],
@@ -154,7 +155,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
#fetch,
[uri],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -179,7 +181,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
uri,
],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -195,7 +198,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
uri,
],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override

View File

@@ -49,14 +49,17 @@ void main() {
test('Test fetching and setting a plan', () async {
final exercisesProvider = ExercisesProvider(mockBaseProvider);
final uri = Uri.https('localhost', 'api/v2/workout/325397/');
when(mockBaseProvider.makeUrl('workout', id: 325397)).thenReturn(uri);
final uri = Uri.https('localhost', 'api/v2/routine/325397/');
when(mockBaseProvider.makeUrl('routine', id: 325397)).thenReturn(uri);
when(mockBaseProvider.fetch(uri)).thenAnswer(
(_) async => Future.value({
'id': 325397,
'created': '2022-10-10',
'name': 'Test workout',
'creation_date': '2022-10-10',
'description': 'Test workout abcd',
'start': '2021-12-20',
'end': '2022-06-06',
'fit_in_week': false
}),
);
@@ -84,7 +87,7 @@ void main() {
'description': 'Test workout abcd',
}),
);
when(mockBaseProvider.deleteRequest('workout', 325397)).thenAnswer(
when(mockBaseProvider.deleteRequest('routine', 325397)).thenAnswer(
(_) => Future.value(Response('', 204)),
);

View File

@@ -108,7 +108,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
);
@override
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) => (super.noSuchMethod(
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) =>
(super.noSuchMethod(
Invocation.method(
#getDefaultHeaders,
[],
@@ -154,7 +155,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
#fetch,
[uri],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -179,7 +181,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
uri,
],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override
@@ -195,7 +198,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i4.WgerBaseProvider {
uri,
],
),
returnValue: _i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i5.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i5.Future<Map<String, dynamic>>);
@override

View File

@@ -24,8 +24,8 @@ import 'package:mockito/mockito.dart';
import 'package:provider/provider.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/models/workouts/day.dart';
import 'package:wger/models/workouts/set.dart';
import 'package:wger/models/workouts/setting.dart';
import 'package:wger/models/workouts/slot.dart';
import 'package:wger/models/workouts/slot_entry.dart';
import 'package:wger/providers/base_provider.dart';
import 'package:wger/providers/exercises.dart';
import 'package:wger/providers/workout_plans.dart';
@@ -81,8 +81,8 @@ void main() {
});
testWidgets('Test creating a new set', (WidgetTester tester) async {
when(mockWorkoutPlans.addSet(any)).thenAnswer((_) => Future.value(Set.empty()));
when(mockWorkoutPlans.addSetting(any)).thenAnswer((_) => Future.value(Setting.empty()));
when(mockWorkoutPlans.addSet(any)).thenAnswer((_) => Future.value(Slot.empty()));
when(mockWorkoutPlans.addSetting(any)).thenAnswer((_) => Future.value(SlotEntry.empty()));
when(mockWorkoutPlans.fetchSmartText(any, any)).thenAnswer((_) => Future.value('2 x 10'));
when(mockExerciseProvider.searchExercise(
any,

View File

@@ -21,8 +21,8 @@ import 'package:wger/models/workouts/log.dart' as _i18;
import 'package:wger/models/workouts/repetition_unit.dart' as _i12;
import 'package:wger/models/workouts/routine.dart' as _i13;
import 'package:wger/models/workouts/session.dart' as _i17;
import 'package:wger/models/workouts/set.dart' as _i15;
import 'package:wger/models/workouts/setting.dart' as _i16;
import 'package:wger/models/workouts/slot.dart' as _i15;
import 'package:wger/models/workouts/slot_entry.dart' as _i16;
import 'package:wger/models/workouts/weight_unit.dart' as _i11;
import 'package:wger/providers/auth.dart' as _i9;
import 'package:wger/providers/base_provider.dart' as _i2;
@@ -42,7 +42,8 @@ import 'package:wger/providers/workout_plans.dart' as _i22;
// ignore_for_file: camel_case_types
// ignore_for_file: subtype_of_sealed_class
class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvider {
class _FakeWgerBaseProvider_0 extends _i1.SmartFake
implements _i2.WgerBaseProvider {
_FakeWgerBaseProvider_0(
Object parent,
Invocation parentInvocation,
@@ -52,7 +53,8 @@ class _FakeWgerBaseProvider_0 extends _i1.SmartFake implements _i2.WgerBaseProvi
);
}
class _FakeExerciseDatabase_1 extends _i1.SmartFake implements _i3.ExerciseDatabase {
class _FakeExerciseDatabase_1 extends _i1.SmartFake
implements _i3.ExerciseDatabase {
_FakeExerciseDatabase_1(
Object parent,
Invocation parentInvocation,
@@ -72,7 +74,8 @@ class _FakeExercise_2 extends _i1.SmartFake implements _i4.Exercise {
);
}
class _FakeExerciseCategory_3 extends _i1.SmartFake implements _i5.ExerciseCategory {
class _FakeExerciseCategory_3 extends _i1.SmartFake
implements _i5.ExerciseCategory {
_FakeExerciseCategory_3(
Object parent,
Invocation parentInvocation,
@@ -162,7 +165,8 @@ class _FakeWeightUnit_11 extends _i1.SmartFake implements _i11.WeightUnit {
);
}
class _FakeRepetitionUnit_12 extends _i1.SmartFake implements _i12.RepetitionUnit {
class _FakeRepetitionUnit_12 extends _i1.SmartFake
implements _i12.RepetitionUnit {
_FakeRepetitionUnit_12(
Object parent,
Invocation parentInvocation,
@@ -192,8 +196,8 @@ class _FakeDay_14 extends _i1.SmartFake implements _i14.Day {
);
}
class _FakeSet_15 extends _i1.SmartFake implements _i15.Set {
_FakeSet_15(
class _FakeSlot_15 extends _i1.SmartFake implements _i15.Slot {
_FakeSlot_15(
Object parent,
Invocation parentInvocation,
) : super(
@@ -202,8 +206,8 @@ class _FakeSet_15 extends _i1.SmartFake implements _i15.Set {
);
}
class _FakeSetting_16 extends _i1.SmartFake implements _i16.Setting {
_FakeSetting_16(
class _FakeSlotEntry_16 extends _i1.SmartFake implements _i16.SlotEntry {
_FakeSlotEntry_16(
Object parent,
Invocation parentInvocation,
) : super(
@@ -212,7 +216,8 @@ class _FakeSetting_16 extends _i1.SmartFake implements _i16.Setting {
);
}
class _FakeWorkoutSession_17 extends _i1.SmartFake implements _i17.WorkoutSession {
class _FakeWorkoutSession_17 extends _i1.SmartFake
implements _i17.WorkoutSession {
_FakeWorkoutSession_17(
Object parent,
Invocation parentInvocation,
@@ -289,7 +294,8 @@ class MockExercisesProvider extends _i1.Mock implements _i19.ExercisesProvider {
) as List<_i4.Exercise>);
@override
set filteredExercises(List<_i4.Exercise>? newFilteredExercises) => super.noSuchMethod(
set filteredExercises(List<_i4.Exercise>? newFilteredExercises) =>
super.noSuchMethod(
Invocation.setter(
#filteredExercises,
newFilteredExercises,
@@ -298,7 +304,8 @@ class MockExercisesProvider extends _i1.Mock implements _i19.ExercisesProvider {
);
@override
Map<int, List<_i4.Exercise>> get exerciseBasesByVariation => (super.noSuchMethod(
Map<int, List<_i4.Exercise>> get exerciseBasesByVariation =>
(super.noSuchMethod(
Invocation.getter(#exerciseBasesByVariation),
returnValue: <int, List<_i4.Exercise>>{},
) as Map<int, List<_i4.Exercise>>);
@@ -510,7 +517,8 @@ class MockExercisesProvider extends _i1.Mock implements _i19.ExercisesProvider {
) as _i20.Future<void>);
@override
_i20.Future<_i4.Exercise> fetchAndSetExercise(int? exerciseId) => (super.noSuchMethod(
_i20.Future<_i4.Exercise> fetchAndSetExercise(int? exerciseId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetExercise,
[exerciseId],
@@ -550,7 +558,8 @@ class MockExercisesProvider extends _i1.Mock implements _i19.ExercisesProvider {
) as _i20.Future<_i4.Exercise>);
@override
_i20.Future<void> initCacheTimesLocalPrefs({dynamic forceInit = false}) => (super.noSuchMethod(
_i20.Future<void> initCacheTimesLocalPrefs({dynamic forceInit = false}) =>
(super.noSuchMethod(
Invocation.method(
#initCacheTimesLocalPrefs,
[],
@@ -596,7 +605,8 @@ class MockExercisesProvider extends _i1.Mock implements _i19.ExercisesProvider {
) as _i20.Future<void>);
@override
_i20.Future<void> updateExerciseCache(_i3.ExerciseDatabase? database) => (super.noSuchMethod(
_i20.Future<void> updateExerciseCache(_i3.ExerciseDatabase? database) =>
(super.noSuchMethod(
Invocation.method(
#updateExerciseCache,
[database],
@@ -606,7 +616,8 @@ class MockExercisesProvider extends _i1.Mock implements _i19.ExercisesProvider {
) as _i20.Future<void>);
@override
_i20.Future<void> fetchAndSetMuscles(_i3.ExerciseDatabase? database) => (super.noSuchMethod(
_i20.Future<void> fetchAndSetMuscles(_i3.ExerciseDatabase? database) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetMuscles,
[database],
@@ -616,7 +627,8 @@ class MockExercisesProvider extends _i1.Mock implements _i19.ExercisesProvider {
) as _i20.Future<void>);
@override
_i20.Future<void> fetchAndSetCategories(_i3.ExerciseDatabase? database) => (super.noSuchMethod(
_i20.Future<void> fetchAndSetCategories(_i3.ExerciseDatabase? database) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetCategories,
[database],
@@ -626,7 +638,8 @@ class MockExercisesProvider extends _i1.Mock implements _i19.ExercisesProvider {
) as _i20.Future<void>);
@override
_i20.Future<void> fetchAndSetLanguages(_i3.ExerciseDatabase? database) => (super.noSuchMethod(
_i20.Future<void> fetchAndSetLanguages(_i3.ExerciseDatabase? database) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetLanguages,
[database],
@@ -636,7 +649,8 @@ class MockExercisesProvider extends _i1.Mock implements _i19.ExercisesProvider {
) as _i20.Future<void>);
@override
_i20.Future<void> fetchAndSetEquipments(_i3.ExerciseDatabase? database) => (super.noSuchMethod(
_i20.Future<void> fetchAndSetEquipments(_i3.ExerciseDatabase? database) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetEquipments,
[database],
@@ -745,7 +759,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i2.WgerBaseProvider {
);
@override
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) => (super.noSuchMethod(
Map<String, String> getDefaultHeaders({bool? includeAuth = false}) =>
(super.noSuchMethod(
Invocation.method(
#getDefaultHeaders,
[],
@@ -791,7 +806,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i2.WgerBaseProvider {
#fetch,
[uri],
),
returnValue: _i20.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i20.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i20.Future<Map<String, dynamic>>);
@override
@@ -816,7 +832,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i2.WgerBaseProvider {
uri,
],
),
returnValue: _i20.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i20.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i20.Future<Map<String, dynamic>>);
@override
@@ -832,7 +849,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i2.WgerBaseProvider {
uri,
],
),
returnValue: _i20.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i20.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i20.Future<Map<String, dynamic>>);
@override
@@ -864,7 +882,8 @@ class MockWgerBaseProvider extends _i1.Mock implements _i2.WgerBaseProvider {
/// A class which mocks [WorkoutPlansProvider].
///
/// See the documentation for Mockito's code generation for more information.
class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProvider {
class MockWorkoutPlansProvider extends _i1.Mock
implements _i22.WorkoutPlansProvider {
MockWorkoutPlansProvider() {
_i1.throwOnMissingStub(this);
}
@@ -1001,7 +1020,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
) as _i20.Future<void>);
@override
_i20.Future<_i13.Routine> fetchAndSetPlanSparse(int? planId) => (super.noSuchMethod(
_i20.Future<_i13.Routine> fetchAndSetPlanSparse(int? planId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetPlanSparse,
[planId],
@@ -1016,7 +1036,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
) as _i20.Future<_i13.Routine>);
@override
_i20.Future<_i13.Routine> fetchAndSetWorkoutPlanFull(int? workoutId) => (super.noSuchMethod(
_i20.Future<_i13.Routine> fetchAndSetWorkoutPlanFull(int? workoutId) =>
(super.noSuchMethod(
Invocation.method(
#fetchAndSetWorkoutPlanFull,
[workoutId],
@@ -1031,7 +1052,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
) as _i20.Future<_i13.Routine>);
@override
_i20.Future<_i13.Routine> addWorkout(_i13.Routine? workout) => (super.noSuchMethod(
_i20.Future<_i13.Routine> addWorkout(_i13.Routine? workout) =>
(super.noSuchMethod(
Invocation.method(
#addWorkout,
[workout],
@@ -1078,7 +1100,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
base,
],
),
returnValue: _i20.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
returnValue:
_i20.Future<Map<String, dynamic>>.value(<String, dynamic>{}),
) as _i20.Future<Map<String, dynamic>>);
@override
@@ -1157,22 +1180,22 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
) as _i20.Future<void>);
@override
_i20.Future<_i15.Set> addSet(_i15.Set? workoutSet) => (super.noSuchMethod(
_i20.Future<_i15.Slot> addSet(_i15.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#addSet,
[workoutSet],
),
returnValue: _i20.Future<_i15.Set>.value(_FakeSet_15(
returnValue: _i20.Future<_i15.Slot>.value(_FakeSlot_15(
this,
Invocation.method(
#addSet,
[workoutSet],
),
)),
) as _i20.Future<_i15.Set>);
) as _i20.Future<_i15.Slot>);
@override
_i20.Future<void> editSet(_i15.Set? workoutSet) => (super.noSuchMethod(
_i20.Future<void> editSet(_i15.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#editSet,
[workoutSet],
@@ -1182,8 +1205,8 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
) as _i20.Future<void>);
@override
_i20.Future<List<_i15.Set>> reorderSets(
List<_i15.Set>? sets,
_i20.Future<List<_i15.Slot>> reorderSets(
List<_i15.Slot>? sets,
int? startIndex,
) =>
(super.noSuchMethod(
@@ -1194,11 +1217,12 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
startIndex,
],
),
returnValue: _i20.Future<List<_i15.Set>>.value(<_i15.Set>[]),
) as _i20.Future<List<_i15.Set>>);
returnValue: _i20.Future<List<_i15.Slot>>.value(<_i15.Slot>[]),
) as _i20.Future<List<_i15.Slot>>);
@override
_i20.Future<void> fetchComputedSettings(_i15.Set? workoutSet) => (super.noSuchMethod(
_i20.Future<void> fetchComputedSettings(_i15.Slot? workoutSet) =>
(super.noSuchMethod(
Invocation.method(
#fetchComputedSettings,
[workoutSet],
@@ -1209,7 +1233,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
@override
_i20.Future<String> fetchSmartText(
_i15.Set? workoutSet,
_i15.Slot? workoutSet,
_i23.Translation? exercise,
) =>
(super.noSuchMethod(
@@ -1233,7 +1257,7 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
) as _i20.Future<String>);
@override
_i20.Future<void> deleteSet(_i15.Set? workoutSet) => (super.noSuchMethod(
_i20.Future<void> deleteSet(_i15.Slot? workoutSet) => (super.noSuchMethod(
Invocation.method(
#deleteSet,
[workoutSet],
@@ -1243,19 +1267,20 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
) as _i20.Future<void>);
@override
_i20.Future<_i16.Setting> addSetting(_i16.Setting? workoutSetting) => (super.noSuchMethod(
_i20.Future<_i16.SlotEntry> addSetting(_i16.SlotEntry? workoutSetting) =>
(super.noSuchMethod(
Invocation.method(
#addSetting,
[workoutSetting],
),
returnValue: _i20.Future<_i16.Setting>.value(_FakeSetting_16(
returnValue: _i20.Future<_i16.SlotEntry>.value(_FakeSlotEntry_16(
this,
Invocation.method(
#addSetting,
[workoutSetting],
),
)),
) as _i20.Future<_i16.Setting>);
) as _i20.Future<_i16.SlotEntry>);
@override
_i20.Future<dynamic> fetchSessionData() => (super.noSuchMethod(
@@ -1267,12 +1292,14 @@ class MockWorkoutPlansProvider extends _i1.Mock implements _i22.WorkoutPlansProv
) as _i20.Future<dynamic>);
@override
_i20.Future<_i17.WorkoutSession> addSession(_i17.WorkoutSession? session) => (super.noSuchMethod(
_i20.Future<_i17.WorkoutSession> addSession(_i17.WorkoutSession? session) =>
(super.noSuchMethod(
Invocation.method(
#addSession,
[session],
),
returnValue: _i20.Future<_i17.WorkoutSession>.value(_FakeWorkoutSession_17(
returnValue:
_i20.Future<_i17.WorkoutSession>.value(_FakeWorkoutSession_17(
this,
Invocation.method(
#addSession,

View File

@@ -21,8 +21,8 @@ import 'package:wger/models/workouts/day.dart';
import 'package:wger/models/workouts/log.dart';
import 'package:wger/models/workouts/repetition_unit.dart';
import 'package:wger/models/workouts/routine.dart';
import 'package:wger/models/workouts/set.dart';
import 'package:wger/models/workouts/setting.dart';
import 'package:wger/models/workouts/slot.dart';
import 'package:wger/models/workouts/slot_entry.dart';
import 'package:wger/models/workouts/weight_unit.dart';
import './exercises.dart';
@@ -69,22 +69,24 @@ Routine getWorkout({List<Exercise>? exercises}) {
log3.weightUnit = weightUnit1;
log3.repetitionUnit = repetitionUnit1;
final settingBenchPress = Setting(
setId: 1,
final settingBenchPress = SlotEntry(
slotId: 1,
type: 'normal',
order: 1,
exerciseId: 1,
repetitionUnitId: 1,
repetitionRounding: 0.25,
reps: 6,
weightUnitId: 1,
weightRounding: 0.25,
comment: 'ddd',
rir: '3',
);
settingBenchPress.repetitionUnit = repetitionUnit1;
settingBenchPress.weightUnit = weightUnit1;
settingBenchPress.exercise = testBases[0];
settingBenchPress.weight = 80;
final setBenchPress = Set.withData(
final setBenchPress = Slot.withData(
id: 1,
day: 1,
sets: 3,
@@ -92,63 +94,65 @@ Routine getWorkout({List<Exercise>? exercises}) {
comment: 'Make sure to warm up',
);
setBenchPress.addExerciseBase(testBases[0]);
setBenchPress.settings.add(settingBenchPress);
setBenchPress.entries.add(settingBenchPress);
setBenchPress.settingsComputed = [settingBenchPress, settingBenchPress];
final settingSquat = Setting(
setId: 2,
final settingSquat = SlotEntry(
slotId: 2,
type: 'normal',
order: 1,
exerciseId: 8,
repetitionUnitId: 1,
repetitionRounding: 0.25,
reps: 8,
weightUnitId: 1,
weightRounding: 0.25,
comment: 'ddd',
rir: '2',
);
settingSquat.repetitionUnit = repetitionUnit1;
settingSquat.weightUnit = weightUnit1;
settingSquat.exercise = testBases[4];
settingSquat.weight = 120;
final setSquat = Set.withData(id: 2, day: 1, sets: 3, order: 1);
final setSquat = Slot.withData(id: 2, day: 1, sets: 3, order: 1);
setSquat.addExerciseBase(testBases[4]);
setSquat.settings.add(settingSquat);
setSquat.entries.add(settingSquat);
setSquat.settingsComputed = [settingSquat, settingSquat];
final settingSideRaises = Setting(
setId: 2,
final settingSideRaises = SlotEntry(
slotId: 2,
type: 'normal',
order: 1,
exerciseId: 8,
repetitionUnitId: 1,
repetitionRounding: 0.25,
reps: 12,
weightUnitId: 1,
weightRounding: 0.25,
comment: 'ddd',
rir: '',
);
settingSideRaises.repetitionUnit = repetitionUnit1;
settingSideRaises.weightUnit = weightUnit1;
settingSideRaises.exercise = testBases[5];
settingSideRaises.weight = 6;
final setSideRaises = Set.withData(id: 3, day: 1, sets: 3, order: 1);
final setSideRaises = Slot.withData(id: 3, day: 1, sets: 3, order: 1);
setSideRaises.addExerciseBase(testBases[5]);
setSideRaises.settings.add(settingSideRaises);
setSideRaises.entries.add(settingSideRaises);
setSideRaises.settingsComputed = [settingSideRaises, settingSideRaises];
final dayChestShoulders = Day()
..id = 1
..workoutId = 1
..description = 'chest, shoulders'
..daysOfWeek = [1, 2];
dayChestShoulders.sets.add(setBenchPress);
dayChestShoulders.sets.add(setSideRaises);
..routineId = 1
..description = 'chest, shoulders';
dayChestShoulders.slots.add(setBenchPress);
dayChestShoulders.slots.add(setSideRaises);
final dayLegs = Day()
..id = 2
..workoutId = 1
..description = 'legs'
..daysOfWeek = [4];
dayLegs.sets.add(setSquat);
..routineId = 1
..description = 'legs';
dayLegs.slots.add(setSquat);
final routine = Routine(
id: 1,