From 5ad59511e98ac220361eea445b836e20f7a379d9 Mon Sep 17 00:00:00 2001
From: Lara Blersch <lb210@hdm-stuttgart.de>
Date: Thu, 20 Apr 2023 12:24:03 +0200
Subject: [PATCH] some testing for Ingredient

---
 src/main/java/mi/hdm/recipes/Ingredient.java  |  9 +++++
 .../java/mi/hdm/recipes/RecipeManager.java    | 15 +++++++-
 .../java/mi/hdm/recipes/IngredientTest.java   | 37 +++++++++++++++++++
 3 files changed, 59 insertions(+), 2 deletions(-)
 create mode 100644 src/test/java/mi/hdm/recipes/IngredientTest.java

diff --git a/src/main/java/mi/hdm/recipes/Ingredient.java b/src/main/java/mi/hdm/recipes/Ingredient.java
index 6dfeb65..2b20b96 100644
--- a/src/main/java/mi/hdm/recipes/Ingredient.java
+++ b/src/main/java/mi/hdm/recipes/Ingredient.java
@@ -26,4 +26,13 @@ public class Ingredient implements RecipeComponent {
     public NutritionTable getNutritionTable() {
         return nutritionTable;
     }
+
+    @Override
+    public boolean equals(Object o){
+        if (o instanceof Ingredient) {
+            Ingredient in = (Ingredient) o;
+            return this.name.equals(in.getName());
+        }
+        return false;
+    }
 }
diff --git a/src/main/java/mi/hdm/recipes/RecipeManager.java b/src/main/java/mi/hdm/recipes/RecipeManager.java
index ed3801f..19cf5e7 100644
--- a/src/main/java/mi/hdm/recipes/RecipeManager.java
+++ b/src/main/java/mi/hdm/recipes/RecipeManager.java
@@ -1,5 +1,8 @@
 package mi.hdm.recipes;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
 import java.util.List;
 import java.util.Optional;
 
@@ -8,6 +11,7 @@ public class RecipeManager {
     private final Categories categories;
     private final List<Ingredient> ingredients;
     private final NutritionCalculator nutritionCalculator;
+    private static final Logger log = LogManager.getLogger(RecipeManager.class);
 
     public RecipeManager(List<Recipe> recipes, Categories categories, List<Ingredient> ingredients, NutritionCalculator nutritionCalculator) {
         this.recipes = recipes;
@@ -43,8 +47,15 @@ public class RecipeManager {
         return new RecipeEditor(recipe);
     }
 
-    public void addIngredient(Ingredient ingredient) {
-        ingredients.add(ingredient);
+    public boolean addIngredient(Ingredient in) {
+        if (ingredients.contains(in)) {
+            log.error("Ingredient: {} not added because it already exists", in.getName());
+            return false;
+        } else {
+            log.info("Ingredient {} added successfully.", in.getName());
+            ingredients.add(in);
+            return true;
+        }
     }
 
     public Ingredient deleteIngredient(int i) {
diff --git a/src/test/java/mi/hdm/recipes/IngredientTest.java b/src/test/java/mi/hdm/recipes/IngredientTest.java
new file mode 100644
index 0000000..c3698e0
--- /dev/null
+++ b/src/test/java/mi/hdm/recipes/IngredientTest.java
@@ -0,0 +1,37 @@
+package mi.hdm.recipes;
+
+import mi.hdm.exceptions.InvalidIngredientException;
+import org.junit.Test;
+import org.junit.Assert;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+
+public class IngredientTest {
+
+    List<Ingredient> ingredients = new ArrayList<Ingredient>();
+    NutritionTable tt = new NutritionTable(null);
+            //Nutrition.CALORIES, 300, Nutrition.CARBS, 40, Nutrition.FAT, 15, Nutrition.PROTEINS, 7, Nutrition.FIBERS, 3.2, Nutrition.SALT, 0.6
+
+    @Test public void testEquals () {
+        Ingredient i1 = new Ingredient(Measurement.GRAM, "Banana", tt);
+        Ingredient i2 = new Ingredient(Measurement.PIECE, "Banana", tt);
+        Ingredient i3 = new Ingredient(Measurement.GRAM, "Apple", tt);
+
+        assertEquals(i1, i2);
+        assertNotEquals(i1, i3);
+        assertNotEquals(i2, i3);
+    }
+
+    /*@Test public void shouldNotBeAbleToAddIdenticalName () {
+
+        ingredients.add(Measurement.GRAM, "Banana", tt);
+        ingredients.add(Measurement.PIECE, "Banana", tt);
+
+        Assert.assertEquals(1, ingredients.size());
+    }*/
+}
-- 
GitLab