package de.avalax.fitbuddy.domain.model.finished_workout;
import de.avalax.fitbuddy.domain.model.finished_exercise.FinishedExercise;
import de.avalax.fitbuddy.domain.model.workout.WorkoutId;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsEqual.equalTo;
public class BasicFinishedWorkoutTest {
private FinishedWorkout finishedWorkout;
private WorkoutId workoutId;
private String workoutName;
private String created;
private List<FinishedExercise> finishedExercises;
@Before
public void setUp() throws Exception {
workoutId = new WorkoutId("12");
workoutName = "NameOfFinishedWorkout";
created = "2014-10-12 19:30:00";
finishedExercises = new ArrayList<>();
finishedWorkout = new BasicFinishedWorkout(new FinishedWorkoutId("42"), workoutId, workoutName, created, finishedExercises);
}
@Test
public void equalWorkoutId_shouldHaveSameIdentity() throws Exception {
FinishedWorkout finishedWorkout2 = new BasicFinishedWorkout(new FinishedWorkoutId("42"), workoutId, null, null, finishedExercises);
assertThat(finishedWorkout, equalTo(finishedWorkout2));
assertThat(finishedWorkout.hashCode(), equalTo(finishedWorkout2.hashCode()));
}
@Test
public void differentWorkoutIds_shouldHaveDifferentIdentity() throws Exception {
FinishedWorkout workout2 = new BasicFinishedWorkout(new FinishedWorkoutId("21"), workoutId, null, null, finishedExercises);
assertThat(finishedWorkout, not(equalTo(workout2)));
assertThat(finishedWorkout.hashCode(), not(equalTo(workout2.hashCode())));
}
@Test
@SuppressWarnings("EqualsBetweenInconvertibleTypes")
public void differntObject_shouldHaveDifferentIdentity() throws Exception {
assertThat(finishedWorkout.equals("42"), is(false));
}
@Test
public void getFinishedWorkoutId_shouldReturnId() throws Exception {
FinishedWorkoutId id = new FinishedWorkoutId("42");
assertThat(finishedWorkout.getFinishedWorkoutId(), equalTo(id));
}
@Test
public void getWorkoutId_shouldReturnId() throws Exception {
assertThat(finishedWorkout.getWorkoutId(), equalTo(workoutId));
}
@Test
public void getName_shouldReturnName() throws Exception {
assertThat(finishedWorkout.getName(), equalTo(workoutName));
}
@Test
public void getFinishedExercises_shouldReturnFinishedExercises() throws Exception {
assertThat(finishedWorkout.getFinishedExercises(), sameInstance(finishedExercises));
}
@Test
public void getCreated_shouldReturnCreatedDate() throws Exception {
assertThat(finishedWorkout.getCreated(), equalTo(created));
}
@Test
public void toString_shouldReturnWorkoutInformations() throws Exception {
assertThat(finishedWorkout.toString(), equalTo("BasicFinishedWorkout [name=" + finishedWorkout.getName() + ", finishedWorkoutId=" + finishedWorkout.getFinishedWorkoutId().toString() + ", workoutId=" + finishedWorkout.getWorkoutId().toString() + ", created=" + finishedWorkout.getCreated() + "]"));
}
}