diff --git a/src/main/java/de/avalax/fitbuddy/application/workout/WorkoutApplicationService.java b/src/main/java/de/avalax/fitbuddy/application/workout/WorkoutApplicationService.java index ee21c5cc..f56bc446 100644 --- a/src/main/java/de/avalax/fitbuddy/application/workout/WorkoutApplicationService.java +++ b/src/main/java/de/avalax/fitbuddy/application/workout/WorkoutApplicationService.java @@ -15,7 +15,7 @@ public WorkoutApplicationService(WorkoutSession workoutSession) { this.workoutSession = workoutSession; } - public int countOfCurrentExercises() throws RessourceNotFoundException { + public int countOfExercises() throws RessourceNotFoundException { return getWorkout().countOfExercises(); } @@ -60,7 +60,7 @@ public double weightOfCurrentSet(int index) throws RessourceNotFoundException{ return exercise.setAtPosition(indexOfCurrentSet).getWeight(); } - public int indexOfCurrentExercise() throws WorkoutNotFoundException { + public int indexOfCurrentExercise() throws RessourceNotFoundException { return getWorkout().indexOfCurrentExercise(); } diff --git a/src/main/java/de/avalax/fitbuddy/domain/model/workout/BasicWorkout.java b/src/main/java/de/avalax/fitbuddy/domain/model/workout/BasicWorkout.java index 460a0d74..a3b391c2 100644 --- a/src/main/java/de/avalax/fitbuddy/domain/model/workout/BasicWorkout.java +++ b/src/main/java/de/avalax/fitbuddy/domain/model/workout/BasicWorkout.java @@ -98,7 +98,10 @@ public void setCurrentExercise(int index) { } @Override - public int indexOfCurrentExercise() { + public int indexOfCurrentExercise() throws ExerciseNotFoundException { + if (exercises.isEmpty()) { + throw new ExerciseNotFoundException(); + } return exerciseIndex; } diff --git a/src/main/java/de/avalax/fitbuddy/domain/model/workout/Workout.java b/src/main/java/de/avalax/fitbuddy/domain/model/workout/Workout.java index 12f7bbd9..a871e0ed 100644 --- a/src/main/java/de/avalax/fitbuddy/domain/model/workout/Workout.java +++ b/src/main/java/de/avalax/fitbuddy/domain/model/workout/Workout.java @@ -31,7 +31,7 @@ public interface Workout extends Serializable { void setCurrentExercise(int index); - int indexOfCurrentExercise(); + int indexOfCurrentExercise() throws ExerciseNotFoundException; int countOfExercises(); } \ No newline at end of file diff --git a/src/main/java/de/avalax/fitbuddy/presentation/workout/WorkoutActivity.java b/src/main/java/de/avalax/fitbuddy/presentation/workout/WorkoutActivity.java index 14ee43fd..64b700bf 100644 --- a/src/main/java/de/avalax/fitbuddy/presentation/workout/WorkoutActivity.java +++ b/src/main/java/de/avalax/fitbuddy/presentation/workout/WorkoutActivity.java @@ -53,7 +53,7 @@ public boolean onCreateOptionsMenu(Menu menu) { inflater.inflate(R.menu.activity_main_actions, menu); this.menuItem = menu.findItem(R.id.action_change_weight); try { - viewPager.setAdapter(new ExercisePagerAdapter(getSupportFragmentManager(), workoutApplicationService.countOfCurrentExercises())); + viewPager.setAdapter(new ExercisePagerAdapter(getSupportFragmentManager(), workoutApplicationService.countOfExercises())); viewPager.setCurrentItem(workoutApplicationService.indexOfCurrentExercise()); updatePage(workoutApplicationService.indexOfCurrentExercise()); } catch (RessourceNotFoundException e) { @@ -100,7 +100,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); if (requestCode == MANAGE_WORKOUT && resultCode == Activity.RESULT_OK) { try { - viewPager.setAdapter(new ExercisePagerAdapter(getSupportFragmentManager(), workoutApplicationService.countOfCurrentExercises())); + viewPager.setAdapter(new ExercisePagerAdapter(getSupportFragmentManager(), workoutApplicationService.countOfExercises())); updatePage(0); } catch (RessourceNotFoundException e) { Log.d("workout not found", e.getMessage(), e); diff --git a/src/test/java/de/avalax/fitbuddy/application/workout/WorkoutApplicationServiceTest.java b/src/test/java/de/avalax/fitbuddy/application/workout/WorkoutApplicationServiceTest.java index d6702568..b7914fa8 100644 --- a/src/test/java/de/avalax/fitbuddy/application/workout/WorkoutApplicationServiceTest.java +++ b/src/test/java/de/avalax/fitbuddy/application/workout/WorkoutApplicationServiceTest.java @@ -38,6 +38,16 @@ public void setUp() throws Exception { public void currentWorkoutId_shouldThrowRessourceNotFoundExeption() throws Exception { workoutApplicationService.currentWorkoutId(); } + + @Test(expected = RessourceNotFoundException.class) + public void indexOfCurrentExercise_shouldThrowRessourceNotFoundExeption() throws Exception { + workoutApplicationService.indexOfCurrentExercise(); + } + + @Test(expected = RessourceNotFoundException.class) + public void countOfExercises_shouldThrowRessourceNotFoundExeption() throws Exception { + workoutApplicationService.countOfExercises(); + } } public class aWorkoutGiven { @@ -58,5 +68,26 @@ public void currentWorkoutId_shouldReturnWorkoutId() throws Exception { assertThat(currentWorkoutId, equalTo(workoutId)); } + + @Test(expected = RessourceNotFoundException.class) + public void indexOfCurrentExerciseWithNoExercises_shouldReturnCurrentIndex() throws Exception { + workoutApplicationService.indexOfCurrentExercise(); + } + + @Test + public void indexOfCurrentExercise_shouldReturnIndexOf0() throws Exception { + workout.createExercise(); + int indexOfCurrentExercise = workoutApplicationService.indexOfCurrentExercise(); + + assertThat(indexOfCurrentExercise,equalTo(0)); + } + + public void countOfExercises_shouldReturnCountOfExercies() throws Exception { + workout.createExercise(); + + int countOfExercises = workoutApplicationService.countOfExercises(); + + assertThat(countOfExercises,equalTo(1)); + } } } \ No newline at end of file diff --git a/src/test/java/de/avalax/fitbuddy/domain/model/workout/BasicWorkoutTest.java b/src/test/java/de/avalax/fitbuddy/domain/model/workout/BasicWorkoutTest.java index c93ae917..e20a0e70 100644 --- a/src/test/java/de/avalax/fitbuddy/domain/model/workout/BasicWorkoutTest.java +++ b/src/test/java/de/avalax/fitbuddy/domain/model/workout/BasicWorkoutTest.java @@ -4,6 +4,7 @@ import de.avalax.fitbuddy.domain.model.exercise.BasicExercise; import de.avalax.fitbuddy.domain.model.exercise.Exercise; import de.avalax.fitbuddy.domain.model.exercise.ExerciseId; +import de.avalax.fitbuddy.domain.model.exercise.ExerciseNotFoundException; import de.avalax.fitbuddy.domain.model.set.Set; import de.bechte.junit.runners.context.HierarchicalContextRunner; import org.junit.Before; @@ -94,9 +95,15 @@ public void setNameWithSpace_shouldSetTrimedName() throws Exception { assertThat(workout.getName(), equalTo("newName")); } + @Test(expected = ExerciseNotFoundException.class) + public void indexOfCurrentExercise_shouldThrowExerciseNotFoundException() throws Exception { + workout.indexOfCurrentExercise(); + } + @Test - public void set_shouldSet() throws Exception { - int index = 42; + public void setCurrentExercise_shouldReturnIndexOfCurrentExercise() throws Exception { + workout.createExercise(); + int index = 0; workout.setCurrentExercise(index);