workouttest_app/test/exercise_plan_repository_test.dart

144 lines
5.1 KiB
Dart

import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/model/exercise_plan.dart';
import 'package:aitrainer_app/model/exercise_plan_detail.dart';
import 'package:aitrainer_app/model/model_change.dart';
import 'package:test/test.dart';
import 'mocks.dart';
main() {
SimExercisePlanRepository _exercisePlanRepository;
int _customerId;
Future<void> setUpPlan() async {
final String planName2 = "Test Plan2";
ExercisePlan plan2 = ExercisePlan(planName2, 101);
_exercisePlanRepository.setCustomerId(101);
_exercisePlanRepository.setExercisePlan(plan2);
ExercisePlanDetail detail3 = ExercisePlanDetail(3);
detail3.repeats = 23;
detail3.weightEquation = "60";
detail3.serie = 4;
_exercisePlanRepository.setActualPlanDetail(detail3);
_exercisePlanRepository.addDetailToPlan();
ExercisePlanDetail detail4 = ExercisePlanDetail(4);
detail4.repeats = 12;
detail4.weightEquation = "95";
detail4.serie = 3;
_exercisePlanRepository.setActualPlanDetail(detail4);
_exercisePlanRepository.addDetailToPlan();
await _exercisePlanRepository.saveExercisePlan();
}
setUp(() async {
_exercisePlanRepository = SimExercisePlanRepository();
_customerId = 62;
await setUpPlan();
});
group('New Plan', () {
test('add new plan and plan details and save', () async {
final String planName = "Boss Test Plan";
ExercisePlan plan = ExercisePlan(planName, _customerId);
_exercisePlanRepository.setExercisePlan(plan);
ExercisePlanDetail detail1 = ExercisePlanDetail(37);
detail1.repeats = 12;
detail1.weightEquation = "80";
detail1.serie = 4;
_exercisePlanRepository.setActualPlanDetail(detail1);
_exercisePlanRepository.addDetailToPlan();
ExercisePlanDetail detail2 = ExercisePlanDetail(55);
detail2.repeats = 13;
detail2.weightEquation = "55";
detail2.serie = 3;
_exercisePlanRepository.setActualPlanDetail(detail2);
_exercisePlanRepository.addDetailToPlan();
await _exercisePlanRepository.saveExercisePlan();
expect(_exercisePlanRepository.getExercisePlan().name, planName);
expect(_exercisePlanRepository.getExercisePlan().exercisePlanId > 0, true);
ExercisePlanDetail detail = _exercisePlanRepository.getExercisePlanDetailByExerciseId(55);
expect(detail.exercisePlanId, _exercisePlanRepository.getExercisePlan().exercisePlanId);
});
test('save new plan and plan details second', () async {
int customerId = 100;
final String planName = "Boss2 Test Plan";
ExercisePlan plan = ExercisePlan(planName, customerId);
_exercisePlanRepository.setExercisePlan(plan);
ExercisePlanDetail detail1 = ExercisePlanDetail(12);
detail1.repeats = 10;
detail1.weightEquation = "40";
detail1.serie = 5;
_exercisePlanRepository.setActualPlanDetail(detail1);
_exercisePlanRepository.addDetailToPlan();
ExercisePlanDetail detail2 = ExercisePlanDetail(13);
detail2.repeats = 33;
detail2.weightEquation = "15";
detail2.serie = 3;
_exercisePlanRepository.setActualPlanDetail(detail2);
_exercisePlanRepository.addDetailToPlan();
await _exercisePlanRepository.saveExercisePlan();
expect(_exercisePlanRepository.getExercisePlan().name, planName);
expectLater(_exercisePlanRepository.getExercisePlan().exercisePlanId > 0, true);
ExercisePlanDetail detail = _exercisePlanRepository.getExercisePlanDetailByExerciseId(13);
expect(detail.exercisePlanId, _exercisePlanRepository.getExercisePlan().exercisePlanId);
expect(detail.repeats, 33);
});
});
group('Existing Plan', () {
test('Get Last Plan and Details from DB', () async {
ExercisePlan exercisePlan = await _exercisePlanRepository.getLastExercisePlan();
expect(exercisePlan.customerId, 101);
await _exercisePlanRepository.getExercisePlanDetails();
expect(_exercisePlanRepository.exercisePlanDetails[3].repeats, 23);
expect(_exercisePlanRepository.exercisePlanDetails[4].weightEquation, "95");
//Test Cache
expect(Cache().getMyExercisePlan().name, "Test Plan2");
expect(Cache().getMyExercisePlanDetails()[3].weightEquation, "60");
});
test('Add new PlanDetail', () async {
_exercisePlanRepository.newPlan = false;
ExercisePlanDetail detail4 = ExercisePlanDetail(5);
detail4.repeats = 6;
detail4.weightEquation = "105";
detail4.serie = 3;
_exercisePlanRepository.setActualPlanDetail(detail4);
_exercisePlanRepository.addDetailToPlan();
await _exercisePlanRepository.saveExercisePlan();
expect(_exercisePlanRepository.getExercisePlan().name, "Test Plan2");
expect(Cache().getMyExercisePlanDetails()[5].weightEquation, "105");
expect(Cache().getMyExercisePlanDetails()[5].repeats, 6);
});
test('Delete from PlanDetails', () async {
_exercisePlanRepository.removeExerciseTypeFromPlanByExerciseTypeId(4);
_exercisePlanRepository.saveExercisePlan();
expect(_exercisePlanRepository.exercisePlanDetails[4].change, ModelChange.delete);
expect(Cache().getMyExercisePlanDetails()[4], isNull);
});
});
}