diff --git a/lib/models/workouts/setting.dart b/lib/models/workouts/setting.dart index 924ef473..a17a421a 100644 --- a/lib/models/workouts/setting.dart +++ b/lib/models/workouts/setting.dart @@ -110,7 +110,7 @@ class Setting { // rather "8 repetitions". If there is weight we want to output "8 x 50kg", // since the repetitions are implied. If other units are used, we always // print them - if (repetitionUnitId != DEFAULT_REPETITION_UNIT || weight == 0) { + if (repetitionUnitId != DEFAULT_REPETITION_UNIT || weight == 0 || weight == null) { out.add(repetitionUnitObj.name); } } diff --git a/test/setting_model_test.dart b/test/setting_model_test.dart new file mode 100644 index 00000000..36680d1d --- /dev/null +++ b/test/setting_model_test.dart @@ -0,0 +1,91 @@ +/* + * This file is part of wger Workout Manager . + * Copyright (C) 2020 wger Team + * + * wger Workout Manager is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * wger Workout Manager is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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/weight_unit.dart'; + +void main() { + group('Test the singleSettingRepText method', () { + test('Default rep and weight units, no RiR', () async { + final repUnit = RepetitionUnit(id: 1, name: 'mol'); + final weightUnit = WeightUnit(id: 1, name: 'mg'); + + var setting = Setting.empty(); + setting.reps = 2; + setting.weight = 30; + setting.rir = ''; + setting.setRepetitionUnit(repUnit); + setting.setWeightUnit(weightUnit); + expect(setting.singleSettingRepText, '2 × 30 mg'); + }); + + test('Default rep and weight units', () async { + final repUnit = RepetitionUnit(id: 1, name: 'mol'); + final weightUnit = WeightUnit(id: 1, name: 'mg'); + + var setting = Setting.empty(); + setting.reps = 2; + setting.weight = 30; + setting.rir = '1.5'; + setting.setRepetitionUnit(repUnit); + setting.setWeightUnit(weightUnit); + expect(setting.singleSettingRepText, '2 × 30 mg \n (1.5 RiR)'); + }); + + test('No weight, default rep and weight units', () async { + final repUnit = RepetitionUnit(id: 1, name: 'mol'); + final weightUnit = WeightUnit(id: 1, name: 'mg'); + + var setting = Setting.empty(); + setting.reps = 2; + setting.weight = null; + setting.rir = '1.5'; + setting.setRepetitionUnit(repUnit); + setting.setWeightUnit(weightUnit); + expect(setting.singleSettingRepText, '2 mol \n (1.5 RiR)'); + }); + + test('Custom rep and weight units, no RiR', () async { + final repUnit = RepetitionUnit(id: 2, name: 'mol'); + final weightUnit = WeightUnit(id: 2, name: 'mg'); + + var setting = Setting.empty(); + setting.reps = 2; + setting.weight = 30; + setting.rir = ''; + setting.setRepetitionUnit(repUnit); + setting.setWeightUnit(weightUnit); + expect(setting.singleSettingRepText, '2 mol × 30 mg'); + }); + + test('Custom rep and weight units, RiR', () async { + final repUnit = RepetitionUnit(id: 2, name: 'mol'); + final weightUnit = WeightUnit(id: 2, name: 'mg'); + + var setting = Setting.empty(); + setting.reps = 2; + setting.weight = 30; + setting.rir = '3'; + setting.setRepetitionUnit(repUnit); + setting.setWeightUnit(weightUnit); + expect(setting.singleSettingRepText, '2 mol × 30 mg \n (3 RiR)'); + }); + }); +}