package mi.hdm.recipes; import mi.hdm.exceptions.InvalidIngredientException; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; public class IngredientTest { IngredientManager underTest = new IngredientManager(); NutritionTable tt = ValidObjectsPool.getValidNutritionTableOne(); @BeforeEach public void setup() { underTest.clearIngredients(); } @Test public void shouldNotCreateIngredientWithNameNull() { Assertions.assertThrows(InvalidIngredientException.class, () -> new Ingredient(Measurement.GRAM, null, tt)); } @Test public void shouldNotCreateIngredientWithNameEmpty() { Assertions.assertThrows(InvalidIngredientException.class, () -> new Ingredient(Measurement.GRAM, "", tt)); } @Test public void shouldNotCreateIngredientWithNutritionTableNull() { Assertions.assertThrows(InvalidIngredientException.class, () -> new Ingredient(Measurement.GRAM, "foo", null)); } @Test public void shouldNotBeAbleToAddIdenticalName() { underTest.addIngredient(Measurement.GRAM, "Banana", tt); Assertions.assertThrows(InvalidIngredientException.class, () -> underTest.addIngredient(Measurement.PIECE, "Banana", tt)); } @Test public void shouldRemoveExistingIngredient() { //given Ingredient i1 = ValidObjectsPool.getValidIngredientOne(); underTest.addIngredient(i1); //when underTest.deleteIngredient(i1.getName()); //expect Assertions.assertEquals(0, underTest.getAllIngredients().size()); } @Test public void shouldThrowWhenRemovingWrongIngredient() { Ingredient i1 = ValidObjectsPool.getValidIngredientOne(); Assertions.assertThrows(InvalidIngredientException.class, () -> underTest.deleteIngredient(i1.getName())); } }