From 3be9628306dadeb27f02001b4b70483eeb57b5ae Mon Sep 17 00:00:00 2001
From: Harry Linrui XU <xulr0820@hotmail.com>
Date: Mon, 17 Apr 2023 11:48:19 +0200
Subject: [PATCH] Made hasUnusedCategories more general + Tested new budget
 methods

---
 .../demo/data/Budget/GeneralBudget.java       | 11 +++++++-
 .../demo/data/Budget/GeneralBudgetTest.java   | 26 +++++++++++++++++++
 2 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java
index 1a22deb2..3a51dc78 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java
@@ -172,10 +172,19 @@ public class GeneralBudget {
         return budgetItems.stream().anyMatch(budgetItem -> budgetItem.getBudgetCategory().equals(category));
     }
 
+    /**
+     * This method checks if there are unused categories in the budget.
+
+     * @return True, if the list contains unused categories. Else returns false.
+     */
     private boolean hasUnusedCategories() {
-        return budgetItems.size() != 4;
+        return budgetItems.size() != ExpenseCategory.values().length;
     }
 
+    /**
+     * Method that adds the remaining, unused categories to the budget list.
+     * Useful, as unused categories can be automatically added without user input.
+     */
     public void addUnusedCategories() {
         if (hasUnusedCategories()) {
             Arrays.stream(ExpenseCategory.values()).
diff --git a/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java
index bd6064b4..e13fadab 100644
--- a/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java
+++ b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java
@@ -1,7 +1,9 @@
 package no.ntnu.idatt1002.demo.data.Budget;
 
 import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
@@ -105,6 +107,30 @@ class GeneralBudgetTest {
         assertTrue(list.isEmpty());
     }
 
+    @Nested
+    class UnusedCategories {
+        GeneralBudget budget;
+        List<BudgetItem> list;
+
+        @BeforeEach
+        void setUp() {
+            list = new ArrayList<>();
+            budget = new GeneralBudget(12, list, 1200);
+            budget.addToBudget(10, "Books", ExpenseCategory.BOOKS);
+        }
+
+        @Test
+        @DisplayName("Test addUnusedCategories adds unused categories")
+        void hasUnusedCategories_with_full_budget() {
+            assertEquals(1, budget.getBudgetItems().size());
+            budget.addUnusedCategories();
+
+            assertEquals(4, budget.getBudgetItems().size());
+        }
+
+    }
+
+
    /* @Test
     @DisplayName("Gets the number of days left in the month. 17 has to be changed to the actual number of days left in the month.")
     void get_days_left_of_the_month(){
-- 
GitLab