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 1a22deb2c9afaed173bd0cc6943d4cae4c9bb699..3a51dc780dc47f3c9c7458a5b050aaa638895a40 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 bd6064b4e7b11b4e5477adf0d3a2ec4777fd8da3..e13fadab307e970a357391f1c93a3b2b317e1518 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(){