diff --git a/commons/src/test/java/commons/RecipeTest.java b/commons/src/test/java/commons/RecipeTest.java new file mode 100644 index 0000000..e53ac58 --- /dev/null +++ b/commons/src/test/java/commons/RecipeTest.java @@ -0,0 +1,128 @@ +package commons; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class RecipeTest { + + Recipe recipe; + + @BeforeEach + void setupRecipe() { + this.recipe = new Recipe(1L, "Chocolate Cake"); + } + + @Test + void getId() { + assertEquals(1L, recipe.getId()); + } + + @Test + void setId() { + recipe.setId(2048L); + assertEquals(2048L, recipe.getId()); + } + + @Test + void getName() { + assertEquals("Chocolate Cake", recipe.getName()); + } + + @Test + void setName() { + recipe.setName("Steak"); + assertEquals("Steak", recipe.getName()); + } + + @Test + void getIngredientsAddThrow() { + // TODO: Change to actual Ingredient class later + assertThrows(UnsupportedOperationException.class, () -> { + recipe.getIngredients().add("Lasagna"); + }); + } + + @Test + void getIngredientsClearThrow() { + assertThrows(UnsupportedOperationException.class, () -> { + recipe.getIngredients().clear(); + }); + } + + @Test + void setIngredients() { + // TODO: Change to actual Ingredient class later + List ingredients = new ArrayList<>(List.of("Chocolate", "Flour", "Egg")); + recipe.setIngredients(ingredients); + + assertEquals(recipe.getIngredients(), ingredients); + assertEquals(recipe.getIngredients().size(), 3); + } + + @Test + void getPreparationStepsAddThrow() { + assertThrows(UnsupportedOperationException.class, () -> { + recipe.getPreparationSteps().add("Preheat Oven"); + }); + } + + @Test + void getPreparationStepsClearThrow() { + assertThrows(UnsupportedOperationException.class, () -> { + recipe.getPreparationSteps().clear(); + }); + } + + @Test + void setPreparationSteps() { + List steps = new ArrayList<>(List.of("Preheat oven", "Mix stuff", "decorate")); + recipe.setPreparationSteps(steps); + + assertEquals(recipe.getPreparationSteps(), steps); + assertEquals(recipe.getPreparationSteps().size(), 3); + } + + @Test + void testEqualsSame() { + Recipe recipe2 = new Recipe(1L, "Chocolate Cake"); + assertEquals(recipe, recipe2); + } + + @Test + void testEqualsSameExceptId() { + Recipe recipe2 = new Recipe(2L, "Chocolate Cake"); + assertNotEquals(recipe, recipe2); + } + + @Test + void testEqualsOnlySameId() { + Recipe recipe2 = new Recipe(1L, "Some random recipe"); + assertEquals(recipe, recipe2); // Equals, we only look at ID!!! + } + + @Test + void testHashCodeSame() { + Recipe recipe2 = new Recipe(1L, "Chocolate Cake"); + + assertEquals(recipe.hashCode(), recipe2.hashCode()); + } + + @Test + void testHashCodeSameExceptId() { + Recipe recipe2 = new Recipe(2L, "Chocolate Cake"); + + assertNotEquals(recipe.hashCode(), recipe2.hashCode()); + } + + @Test + void testHashCodeOnlySameId() { + Recipe recipe2 = new Recipe(1L, "Some random recipe"); + + assertEquals(recipe.hashCode(), recipe2.hashCode()); // Same, only looks at ID!!! + } +} \ No newline at end of file