Skip to content

Commit

Permalink
order finished workouts by date
Browse files Browse the repository at this point in the history
  • Loading branch information
avalax committed Jan 22, 2018
1 parent 7ed1080 commit 6b964f2
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.junit.runner.RunWith;

import de.avalax.fitbuddy.domain.model.exercise.BasicExerciseBuilder;
import de.avalax.fitbuddy.domain.model.finished_workout.FinishedWorkoutId;
import de.avalax.fitbuddy.domain.model.set.BasicSetBuilder;
import de.avalax.fitbuddy.domain.model.workout.BasicWorkoutBuilder;
import de.avalax.fitbuddy.domain.model.workout.Workout;
Expand Down Expand Up @@ -337,6 +338,28 @@ public void aFinishedWorkout_shouldBeDeleted() throws Exception {
application.hasShownAddNoFinishedWorkoutsHint();
}

@Test
public void threeFinishedWorkouts_shouldBeDisplayedByCreationDESC() throws Exception {
BasicSetBuilder set = aSet().withWeight(42).withMaxReps(12);
BasicExerciseBuilder exercise = anExercise().withName("an exercise").withSet(set);
BasicWorkoutBuilder workout = aWorkout().withName("a workout").withExercise(exercise);
Workout persistedWorkout = persistence.addWorkout(workout);
FinishedWorkoutId firstFinishedWorkoutId = persistence.finishWorkout(persistedWorkout);
FinishedWorkoutId secondFinishedWorkoutId = persistence.finishWorkout(persistedWorkout);
FinishedWorkoutId thirdFinishedWorkoutId = persistence.finishWorkout(persistedWorkout);
persistence.updateFinishedWorkoutCreation(firstFinishedWorkoutId, "2017-12-29");
persistence.updateFinishedWorkoutCreation(secondFinishedWorkoutId, "2017-12-30");
persistence.updateFinishedWorkoutCreation(thirdFinishedWorkoutId, "2017-12-31");

activityRule.launchActivity(null);

application.navigateToSummary();

application.showsFinishedWorkoutOverview(0, "a workout", "Dec 31, 2017", "normal");
application.showsFinishedWorkoutOverview(1, "a workout", "Dec 30, 2017", "normal");
application.showsFinishedWorkoutOverview(2, "a workout", "Dec 29, 2017", "normal");
}

@Test
public void aFinishedWorkout_shouldShowExerciseDetails() throws Exception {
BasicSetBuilder set = aSet().withWeight(42).withMaxReps(12);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@
import android.content.Context;
import android.content.SharedPreferences;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import de.avalax.fitbuddy.domain.model.ResourceException;
import de.avalax.fitbuddy.domain.model.finished_workout.FinishedWorkout;
import de.avalax.fitbuddy.domain.model.finished_workout.FinishedWorkoutId;
import de.avalax.fitbuddy.domain.model.workout.BasicWorkoutBuilder;
import de.avalax.fitbuddy.domain.model.workout.Workout;
import de.avalax.fitbuddy.domain.model.workout.WorkoutException;

public class PersistenceRunner {
private FitbuddyActivityTestRule activityRule;
Expand All @@ -24,9 +28,9 @@ public Workout addWorkout(BasicWorkoutBuilder builder) throws ResourceException
return workout;
}

public void finishWorkout(Workout workout) throws ResourceException {
public FinishedWorkoutId finishWorkout(Workout workout) throws ResourceException {
activityRule.workoutService.switchWorkout(workout);
activityRule.workoutService.finishCurrentWorkout();
return activityRule.workoutService.finishCurrentWorkout();
}

public void deleteWorkouts() throws ResourceException {
Expand All @@ -40,6 +44,13 @@ public void deleteWorkouts() throws ResourceException {
}
}

public void updateFinishedWorkoutCreation(FinishedWorkoutId firstFinishedWorkoutId, String date) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
Date dateDate = dateFormat.parse(date);
activityRule.finishedWorkoutService.updatedCreation(firstFinishedWorkoutId, dateDate);
}

public void deleteFinishedWorkouts() {
List<FinishedWorkout> workouts = activityRule.finishedWorkoutService.loadAllFinishedWorkouts();
for (FinishedWorkout finishedWorkout : workouts) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package de.avalax.fitbuddy.application.summary;

import java.util.Date;
import java.util.List;

import de.avalax.fitbuddy.domain.model.finished_workout.FinishedWorkout;
Expand Down Expand Up @@ -29,4 +30,8 @@ public void delete(FinishedWorkout finishedWorkout) {
public boolean hasFinishedWorkouts() {
return finishedWorkoutRepository.size() > 0;
}

public void updatedCreation(FinishedWorkoutId firstFinishedWorkoutId, Date date) {
finishedWorkoutRepository.updateCreation(firstFinishedWorkoutId, date.getTime());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,6 @@ public interface FinishedWorkoutRepository {
long count(WorkoutId workoutId);

Long lastCreation(WorkoutId workoutId);

void updateCreation(FinishedWorkoutId finishedWorkoutId, long time);
}
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public List<FinishedWorkout> loadAll() {
SQLiteDatabase database = sqLiteOpenHelper.getReadableDatabase();
String[] columns = {"id", "workout_id", "name", "created"};
Cursor cursor = database.query(TABLE_FINISHED_WORKOUT, columns,
null, null, null, null, null);
null, null, null, null, "created DESC");
while (cursor.moveToNext()) {
finishedWorkouts.add(createFinishedWorkout(cursor));
}
Expand Down Expand Up @@ -125,6 +125,16 @@ public Long lastCreation(WorkoutId workoutId) {
return creation;
}

@Override
public void updateCreation(FinishedWorkoutId finishedWorkoutId, long time) {
try (SQLiteDatabase database = sqLiteOpenHelper.getWritableDatabase()) {
String[] args = {finishedWorkoutId.getId()};
ContentValues values = new ContentValues();
values.put("created", time);
database.update(TABLE_FINISHED_WORKOUT, values, "id=?", args);
}
}

private FinishedWorkout createFinishedWorkout(Cursor cursor) {
FinishedWorkoutId finishedWorkoutId = new FinishedWorkoutId(cursor.getString(0));
WorkoutId workoutId = new WorkoutId(cursor.getString(1));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package de.avalax.fitbuddy.application.summary;

import org.assertj.core.util.DateUtil;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import de.avalax.fitbuddy.domain.model.finished_workout.FinishedWorkout;
Expand Down Expand Up @@ -83,4 +85,14 @@ public void loadUnknownWorkout_shouldThrowFinishedWorkoutException() throws Exce

finishedWorkoutService.load(finishedWorkoutId);
}

@Test
public void updateCreationDate_shouldUpdateFinishedWorkoutInRepository() throws Exception {
FinishedWorkoutId finishedWorkoutId = new FinishedWorkoutId("1");
Date date = DateUtil.parse("2017-12-31");

finishedWorkoutService.updatedCreation(finishedWorkoutId, date);

verify(finishedWorkoutRepository).updateCreation(finishedWorkoutId, date.getTime());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -179,4 +179,15 @@ public void threeFinishedWorkouts_shouldReturnMostRecentCreationDate() throws Ex

assertThat(finishedWorkoutRepository.lastCreation(workout.getWorkoutId()), equalTo(DateUtil.parse("2017-12-31").getTime()));
}

@Test
public void updateCreation_shouldReturnPersistNewCreationDate() throws Exception {
FinishedWorkoutId finishedWorkoutId = finishedWorkoutRepository.saveWorkout(workout);
date = DateUtil.parse("2017-12-30");

finishedWorkoutRepository.updateCreation(finishedWorkoutId, date.getTime());

FinishedWorkout finishedWorkout = finishedWorkoutRepository.load(finishedWorkoutId);
assertThat(finishedWorkout.getCreated(), equalTo(date.getTime()));
}
}

0 comments on commit 6b964f2

Please sign in to comment.