package de.avalax.fitbuddy.port.adapter.persistence; import android.content.Context; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import java.util.List; import de.avalax.fitbuddy.BuildConfig; import de.avalax.fitbuddy.R; import de.avalax.fitbuddy.domain.model.exercise.BasicExercise; import de.avalax.fitbuddy.domain.model.exercise.Exercise; import de.avalax.fitbuddy.domain.model.finished_exercise.FinishedExercise; import de.avalax.fitbuddy.domain.model.finished_exercise.FinishedExerciseRepository; import de.avalax.fitbuddy.domain.model.finished_workout.FinishedWorkoutId; import de.avalax.fitbuddy.domain.model.finished_workout.FinishedWorkoutRepository; import de.avalax.fitbuddy.domain.model.set.Set; import de.avalax.fitbuddy.domain.model.workout.BasicWorkout; import de.avalax.fitbuddy.domain.model.workout.Workout; import de.avalax.fitbuddy.domain.model.workout.WorkoutId; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.collection.IsEmptyCollection.emptyCollectionOf; @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, manifest = "src/main/AndroidManifest.xml", sdk = 21) public class SQLiteFinishedExerciseRepositoryTest { private FinishedExerciseRepository finishedExerciseRepository; private FinishedWorkoutId finishedWorkoutId; private Exercise exercise; private void createWorkout(FitbuddySQLiteOpenHelper sqLiteOpenHelper) { FinishedWorkoutRepository workoutRepository = new SQLiteFinishedWorkoutRepository(sqLiteOpenHelper, finishedExerciseRepository); Workout workout = new BasicWorkout(); workout.setWorkoutId(new WorkoutId("42")); finishedWorkoutId = workoutRepository.saveWorkout(workout); } @Before public void setUp() throws Exception { Context context = RuntimeEnvironment.application.getApplicationContext(); FitbuddySQLiteOpenHelper sqLiteOpenHelper = new FitbuddySQLiteOpenHelper("SQLiteSetRepositoryTest", 1, context, R.raw.fitbuddy_db); finishedExerciseRepository = new SQLiteFinishedExerciseRepository(sqLiteOpenHelper); createWorkout(sqLiteOpenHelper); exercise = new BasicExercise(); } @Test public void saveExerciseWithoutSets_shouldInsertNothing() throws Exception { finishedExerciseRepository.save(finishedWorkoutId, exercise); List<FinishedExercise> finishedExercises = finishedExerciseRepository.allSetsBelongsTo(finishedWorkoutId); assertThat(finishedExercises, emptyCollectionOf(FinishedExercise.class)); } @Test public void saveExercise_shouldInsertExerciseWithSetInformation() throws Exception { Set set = exercise.getSets().createSet(); set.setWeight(12.34); set.setMaxReps(15); set.setReps(12); finishedExerciseRepository.save(finishedWorkoutId, exercise); List<FinishedExercise> finishedExercises = finishedExerciseRepository.allSetsBelongsTo(finishedWorkoutId); assertThat(finishedExercises, hasSize(1)); FinishedExercise finishedExercise = finishedExercises.get(0); assertThat(finishedExercise.getName(), equalTo(exercise.getName())); assertThat(finishedExercise.getName(), equalTo(exercise.getName())); assertThat(finishedExercise.getWeight(), equalTo(exercise.getSets().get(0).getWeight())); assertThat(finishedExercise.getReps(), equalTo(exercise.getSets().get(0).getReps())); assertThat(finishedExercise.getMaxReps(), equalTo(exercise.getSets().get(0).getMaxReps())); } @Test public void saveExercise_shouldInsertExerciseWithAllSets() throws Exception { exercise.getSets().createSet(); exercise.getSets().createSet(); exercise.getSets().createSet(); finishedExerciseRepository.save(finishedWorkoutId, exercise); List<FinishedExercise> finishedExercises = finishedExerciseRepository.allSetsBelongsTo(finishedWorkoutId); assertThat(finishedExercises, hasSize(3)); } }