diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 00000000..c9279df0 --- /dev/null +++ b/domain-model.md @@ -0,0 +1,17 @@ +# Basket class + + +| Member variable | Data type | +|-----------------|-----------------------------------| +| `bagelMenu` | `static Hashmap` | +| `basket` | `ArrayList` | +| `basketSize` | `int` | +| `isManager` | `Boolean` | + + + +| Method | Scenario | Output | +|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| +| `addBagel(String)` | Basket not full
Basket is full
Bagel not on the menu | Return "Bagel added to basket."
Return "Basket is full."
Return "This bagel is not on the menu." | +| `removeBagel(String)` | Bagel exists in basket
Bagel does not exist in basket | Return "Bagel removed from basket."
Return "This bagel is not in your basket." | +| `setBasketSize(int)` | Basket capacity is changed to a positive integer by a manager
Basket capacity value is not positive
Basket capacity is changed by a non-manager | Return true
Return false
Return false | diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index df7a20aa..0d48ea29 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,5 +1,53 @@ package com.booleanuk.core; +import java.util.ArrayList; +import java.util.HashMap; + public class Basket { + static HashMap bagelMenu = new HashMap(); + static{ + bagelMenu.put("Sesame", 3); + bagelMenu.put("Oat", 3); + bagelMenu.put("Chicken", 5); + bagelMenu.put("Cheese", 4); + } + + int basketSize = 5; + + ArrayList basket = new ArrayList<>(); + + Boolean isManager=false; + + public String addBagel(String bagel){ + if (basket.size() 0 && isManager)){ + this.basketSize=basketSize; + return true; + }else{ + return false; + } + } + } diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index e35771b3..a528a9f8 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -4,5 +4,59 @@ import org.junit.jupiter.api.Test; class BasketTest { + @Test + public void testAddBagel(){ + Basket basket = new Basket(); + // Test if valid bagel is added to basket + Assertions.assertEquals("Bagel added to basket.", basket.addBagel("Sesame")); + Assertions.assertEquals("Bagel added to basket.", basket.addBagel("Oat")); + // Test if invalid bagel is not added to basket + Assertions.assertEquals("This bagel is not on the menu.", basket.addBagel("Totally not a bagel.")); + } + + @Test + public void testRemoveBagel(){ + Basket basket = new Basket(); + basket.addBagel("Sesame"); + basket.addBagel("Oat"); + // Test if valid bagel is removed from basket + Assertions.assertEquals("Bagel removed from basket.", basket.removeBagel("Sesame")); + Assertions.assertEquals("Bagel removed from basket.", basket.removeBagel("Oat")); + } + + @Test + public void testSetBasketSize(){ + Basket basket = new Basket(); + // Test if basket size is not changed by non-manager + Assertions.assertFalse(basket.setBasketSize(3)); + // Test if basket size is not changed by non-manager when value is not positive + Assertions.assertFalse(basket.setBasketSize(-1)); + + basket.isManager=true; + // Test if basket size is not changed by manager when value is not positive + Assertions.assertFalse(basket.setBasketSize(-1)); + // Test if basket size is changed by manager + Assertions.assertTrue(basket.setBasketSize(3)); + Assertions.assertEquals(3, basket.basketSize); + + } + + @Test + public void testFullBasket(){ + Basket basket = new Basket(); + basket.isManager=true; + basket.setBasketSize(1); + basket.addBagel("Sesame"); + // Test if customer is notified when trying to add a bagel in full basket + Assertions.assertEquals("Basket is full.", basket.addBagel("Oat")); + } + + @Test + public void testRemoveBagelInvalid(){ + Basket basket = new Basket(); + basket.addBagel("Sesame"); + // Test if customer is notified when trying to remove bagel not present in basket + Assertions.assertEquals("This bagel is not in your basket.", basket.removeBagel("Oat")); + } }