package de.avalax.fitbuddy.port.adapter.service; import de.avalax.fitbuddy.domain.model.workout.Workout; import de.avalax.fitbuddy.domain.model.workout.WorkoutParseException; import org.junit.Before; import org.junit.Test; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; public class JsonToWorkoutAdapterTest { private JsonToWorkoutAdapter jsonToWorkoutAdapter; @Before public void setUp() throws Exception { jsonToWorkoutAdapter = new JsonToWorkoutAdapter(); } @Test(expected = WorkoutParseException.class) public void nullInstance_shouldThrowWorkoutParseException() throws Exception { jsonToWorkoutAdapter.createFromJson(null); } @Test(expected = WorkoutParseException.class) public void emtpyString_shouldThrowWorkoutParseException() throws Exception { jsonToWorkoutAdapter.createFromJson(""); } @Test(expected = WorkoutParseException.class) public void invalidJasonString_shouldThrowWorkoutParseException() throws Exception { jsonToWorkoutAdapter.createFromJson("NotAJsonString"); } @Test public void emptyJson_shouldReturnEmptyWorkout() throws Exception { Workout workout = jsonToWorkoutAdapter.createFromJson("[\"\",[]]"); assertThat(workout.getName(), equalTo("")); assertThat(workout.getExercises().size(), equalTo(0)); } @Test public void jsonWithWorkoutName_shouldReturnWorkoutWithNameSet() throws Exception { Workout workout = jsonToWorkoutAdapter.createFromJson("[\"my workout\",[]]"); assertThat(workout.getName(), equalTo("my workout")); } @Test public void jsonWithOneExecise_shouldReturnWorkoutWithExercise() throws Exception { Workout workout = jsonToWorkoutAdapter.createFromJson("[\"\",[[\"bankdrücken\",[[12,80],[12,80],[12,80]]]]]"); assertThat(workout.getExercises().size(), equalTo(1)); assertThat(workout.getExercises().get(0).getName(), equalTo("bankdrücken")); assertThat(workout.getExercises().get(0).getSets().size(), equalTo(3)); assertThat(workout.getExercises().get(0).getSets().get(0).getMaxReps(), is(12)); } }