diff --git a/DomainModel.md b/DomainModel.md new file mode 100644 index 00000000..2965f987 --- /dev/null +++ b/DomainModel.md @@ -0,0 +1,53 @@ +## Exercise Requirements + +- Use only the Basket class and BasketTest class provided. Later, you'll be building another version of this project using multiple classes together as we learn object-oriented programming. +- You **must** design a domain model before you begin building. Add your model as either a `.md` file or a screenshot +- You **must** use the Red Green Refactor approach to write your code. To demonstrate this, `git commit` after writing your test and commit again after writing the source code to pass it + +## User Stories + +``` +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. +``` + +``` +2. +As a member of the public, +So I can change my order, +I'd like to remove a bagel from my basket. +``` + +``` +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. +``` + +``` +4. +As a Bob's Bagels manager, +So that I can expand my business, +I’d like to change the capacity of baskets. +``` + +``` +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. +``` +## Domain model Basket + +| Variables | Methods | Scenario | Outputs | +|------------------------------------|------------------------------------------------------|--------------------------------|-------------------------------------------------------------| +| `ArrayList bagelsInStore` | | | | +| `ArrayList bagelsInBasket` | `boolean removeBagel(String bagel)` | Removing a specific bagel | Sysout bagel removed from basket or bagel doesnt exist | +| | `boolean addBagel(String bagel)` | user adds bagels to basket | Sysout if reched max capacity or if not output baggel added | //Notes Check by array length if the length becomes longer then max capacity +| `int maxCapacity` | `boolean incrementCapacity(int amount, String name)` | Bob wants to grow his capacity | return true if incremented and sysout that it got higher | + + +## Domain model diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index df7a20aa..acfc69cc 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,5 +1,46 @@ package com.booleanuk.core; +import java.util.ArrayList; + public class Basket { + ArrayList bagelsInStore = new ArrayList<>(); + ArrayList bagelsInBasket = new ArrayList<>(); + int maxCapacity = 5; + + public Basket() { + bagelsInStore.add("Cheese Bagel"); + bagelsInBasket.add("Pepperoni Bagel"); + bagelsInBasket.add("Cheese Bagel"); + bagelsInBasket.add("bagel1"); + + } + + public boolean addBagel(String bagel) { + if(bagel.isEmpty() || !(bagelsInStore.contains(bagel)) || maxCapacity == bagelsInBasket.size() ) { + return false; + } + bagelsInBasket.add(bagel); + System.out.println("Your: " + bagel + " Has been added to the basket"); + return true; + } + + public boolean removeBagel(String bagel) { + if(bagel.isEmpty() || !(bagelsInBasket.contains(bagel))) { + System.out.println("The item you're trying to remove doesn't exist."); + return false; + } + bagelsInBasket.remove(bagel); + System.out.println("The item " + bagel + " Got removed from your basket"); + return true; + } + + public boolean incrementCapacity(int amount, String name) { + if(!name.equalsIgnoreCase("bob")) { + return false; + } + maxCapacity = maxCapacity + amount; + System.out.println("You have now updated the capacity"); + return true; + } } diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index e35771b3..155a84f5 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -4,5 +4,47 @@ import org.junit.jupiter.api.Test; class BasketTest { +Basket basket; + + BasketTest(){ + basket = new Basket(); + } + + @Test + public void testAddBagelExists() { + Assertions.assertFalse(basket.addBagel("")); + + } + + @Test + public void testAddBagel() { + Assertions.assertTrue(basket.addBagel("Cheese Bagel")); + Assertions.assertTrue(basket.addBagel("Cheese Bagel")); + Assertions.assertFalse(basket.addBagel("Ham Bagel")); + Assertions.assertTrue(basket.bagelsInBasket.contains("Cheese Bagel")); + Assertions.assertFalse(basket.bagelsInBasket.contains("Ham Bagel")); + + + } + @Test + public void testRemoveBagel() { + Assertions.assertFalse(basket.addBagel("")); + Assertions.assertFalse(basket.removeBagel("Double Cheese Bagel")); // doesn't exist + Assertions.assertTrue(basket.removeBagel("Pepperoni Bagel")); + Assertions.assertFalse(basket.removeBagel("Pepperoni Bagel"));// exist + Assertions.assertFalse(basket.bagelsInBasket.contains("Pepperoni Bagel")); + Assertions.assertFalse(basket.bagelsInBasket.contains("Double Cheese Bagel")); + } + + @Test + public void testBucketIsNotFull() { + Assertions.assertTrue(basket.addBagel("Cheese Bagel")); + } + + @Test + public void testIncrementBucketCapacity() { + Assertions.assertFalse(basket.incrementCapacity(2, "Dave")); + Assertions.assertTrue(basket.incrementCapacity(2, "bob")); + } }