diff --git a/domainModel.md b/domainModel.md new file mode 100644 index 00000000..2b638f6a --- /dev/null +++ b/domainModel.md @@ -0,0 +1,72 @@ +### Leo Wahlandt Domain Model + + +``` +1. +As a member of the public, +So I can order a bagel before work, +I'd like to add a specific type of bagel to my basket. +``` + +| Classes | Member Variable | Method | Scenario | Outcome | +|---------|--------------------------|------------------------------------|-----------------------------------------|---------| +| Basket | ArrayList basket | add(String bagelType) | Add existing bagel into basket | true | +| | | | Try to add non-existing bagel to basket | false | +| | | | | | + +``` +2. +As a member of the public, +So I can change my order, +I'd like to remove a bagel from my basket. +``` +| Classes | Member Variable | Method | Scenario | Outcome | +|---------|--------------------------|-----------------------------------|--------------------------------------------|---------| +| Basket | ArrayList basket | remove(String bagel) | Remove existing bagel from basket | true | +| | | | Try to remove non-existing bagel to basket | false | +| | | | | | + + + + +``` +3. +As a member of the public, +So that I can not overfill my small bagel basket +I'd like to know when my basket is full when I try adding an item beyond my basket capacity. +``` +| Classes | Member Variable | Method | Scenario | Outcome | +|---------|----------------------------|-------------------------|-------------------------------|---------| +| Basket | ArrayList basket | checkBasketSize() | if basket size is not reached | True | +| | | | If basket size is reached | false | +| | | | | | + + + +``` +4. +As a Bob's Bagels manager, +So that I can expand my business, +I’d like to change the capacity of baskets. + +Manager has role number 0 for Admin +``` +| Classes | Member Variable | Method | Scenario | Outcome | +|---------|----------------------------|---------------------------------------------|--------------------------------------|---------| +| Basket | ArrayList basket | changeBasketSize(int memberId, int newSize) | Owner change basket size | true | +| | | | If someone else tries to change size | false | +| | | | | | + + +``` +5. +As a member of the public +So that I can maintain my sanity +I'd like to know if I try to remove an item that doesn't exist in my basket. +``` + +| Classes | Member Variable | Method | Scenario | Outcome | +|---------|---------------------------|-----------------------|---------------------------------------------|------------------------------------| +| Basket | ArrayList basket | remove(String bagel) | Try to remove non-existing bagel to basket | "Cannot remove non-existing bagel" | +| | | | | | +| | | | | | diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index df7a20aa..5ce97e53 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,5 +1,48 @@ package com.booleanuk.core; +import java.sql.Array; +import java.util.ArrayList; +import java.util.HashMap; + public class Basket { + ArrayList basket; + int basketSize; + + public Basket() { + this.basket = new ArrayList<>(); + this.basketSize = 4; + } + + public boolean add(String bagel) { + if(this.basket.size() < this.basketSize) { + basket.add(bagel); + return basket.contains(bagel); + } + else { + return false; + } + + } + + public boolean remove(String bagel) { + if(basket.contains(bagel)) { + basket.remove(bagel); + return true; + } + return false; + } + + public boolean checkBasketSize() { + return basket.size() <= basketSize; + } + public boolean changeBasketSize(int memberId, int newSize) { + if(memberId == 0) { + this.basketSize = newSize; + 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..b3e8ff74 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -5,4 +5,73 @@ class BasketTest { + @Test + public void addBagelTest() { + Basket basket = new Basket(); + + Assertions.assertTrue(basket.add("Sesame")); + } + + @Test + public void removeBagelTest() { + Basket basket = new Basket(); + basket.add("Plain"); + Assertions.assertTrue(basket.remove("Plain")); + + } + + @Test + public void checkBasketSize() { + Basket basket = new Basket(); + Assertions.assertTrue(basket.checkBasketSize()); + } + + @Test + public void addBagelToFullBasket() { + Basket basket = new Basket(); + basket.add("Plain"); + basket.add("Sesame"); + basket.add("Mixed"); + basket.add("Everything bagel"); + Assertions.assertTrue(basket.checkBasketSize()); + + // Try to add basket when full + Assertions.assertFalse(basket.add("Plain")); + } + + @Test + public void changeBasketSizeTest(){ + Basket basket = new Basket(); + + Assertions.assertFalse(basket.changeBasketSize(1, 1)); + Assertions.assertTrue(basket.changeBasketSize(0, 6)); + } + + @Test + public void changeBasketSizeWhenFullTest() { + Basket basket = new Basket(); + basket.add("Sesame"); + basket.add("Sesame"); + basket.add("Sesame"); + basket.add("Sesame"); + Assertions.assertFalse(basket.add("Sesame")); + + + Assertions.assertTrue(basket.changeBasketSize(0, 6)); + Assertions.assertTrue(basket.add("Plain")); + Assertions.assertTrue(basket.add("Plain")); + //Basket full + Assertions.assertFalse(basket.add("Plain")); + Assertions.assertFalse(basket.changeBasketSize(1, 7)); + Assertions.assertFalse(basket.add("Plain")); + } +//$ git commit -m "Checked so normal user cannot change basket size" + @Test + public void removeNonExistingBagelTest(){ + Basket basket = new Basket(); + basket.add("Sesame"); + basket.add("Sesame"); + Assertions.assertFalse(basket.remove("Plain")); + } + }