From c45bd01c502dabad8b2b7630d959a4a77031478c Mon Sep 17 00:00:00 2001 From: Tuva Aarseth Date: Wed, 14 Aug 2024 14:09:51 +0200 Subject: [PATCH 1/2] Created domain model and tests for use cases --- domain-model.md | 17 +++++++ src/main/java/com/booleanuk/core/Basket.java | 25 ++++++++++ .../java/com/booleanuk/core/BasketTest.java | 47 +++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 domain-model.md diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 00000000..26ffc955 --- /dev/null +++ b/domain-model.md @@ -0,0 +1,17 @@ +# Basket class + + +| Member variable | Data type | +|-----------------|------------------------| +| `bagels` | `Hashmap` | +| `basket` | `List` | +| `basketSize` | `int` | + + + +| Method | Scenario | Output | +|-----------------------|---------------------------------------------------------------------------------------|------------------------------| +| `addBagel(String)` | Basket not full
Basket is full | Return true
Return false | +| `removeBagel(String)` | Bagel exists in basket
Bagel does not exist in basket | Return true
Return false | +| `getBasketSize()` | | Return basket size | +| `setBasketSize(int)` | Basket capacity is changed to a whole, positive number
Basket capacity is invalid | Return true
Return false | diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index df7a20aa..15271e09 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,5 +1,30 @@ package com.booleanuk.core; +import java.util.HashMap; +import java.util.List; + public class Basket { + int basketSize = 3; + + HashMap bagels = new HashMap<>(); + + String[] basket = new String[basketSize]; + + public Boolean addBagel(String bagel){ + return true; + } + + public Boolean removeBagel(String bagel){ + return true; + } + + public Boolean setBasketSize(int basketSize){ + return true; + } + + public int getBasketSize(){ + return basketSize; + } + } diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index e35771b3..36bc6308 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -4,5 +4,52 @@ import org.junit.jupiter.api.Test; class BasketTest { + @Test + public void testAddBagel(){ + Basket basket = new Basket(); + Assertions.assertTrue(basket.addBagel("Sesame")); + Assertions.assertTrue(basket.addBagel("Oat")); + Assertions.assertFalse(basket.addBagel("Totally not a bagel")); + } + + @Test + public void testRemoveBagel(){ + Basket basket = new Basket(); + basket.addBagel("Sesame"); + basket.addBagel("Oat"); + Assertions.assertTrue(basket.removeBagel("Sesame")); + Assertions.assertTrue(basket.removeBagel("Oat")); + } + + @Test + public void testGetBasketSize(){ + Basket basket = new Basket(); + basket.basketSize = 3; + Assertions.assertEquals(3, basket.getBasketSize()); + } + + @Test + public void testSetBasketSize(){ + Basket basket = new Basket(); + // basket.setBasketSize(3); + Assertions.assertTrue(basket.setBasketSize(3)); + Assertions.assertEquals(3, basket.getBasketSize()); + } + + @Test + public void testFullBasket(){ + Basket basket = new Basket(); + basket.setBasketSize(1); + Assertions.assertTrue(basket.addBagel("Sesame")); + Assertions.assertFalse(basket.addBagel("Oat")); + } + + @Test + public void testRemoveBagelInvalid(){ + Basket basket = new Basket(); + basket.addBagel("Sesame"); + Assertions.assertFalse(basket.removeBagel("Oat")); + } + } From 21e26fcf07af48fdcb66070c38b66bc5939f6f58 Mon Sep 17 00:00:00 2001 From: Tuva Aarseth Date: Wed, 14 Aug 2024 15:54:12 +0200 Subject: [PATCH 2/2] Added methods to pass tests and fulfil user stories. Refactored code and changed domain model accordingly. --- domain-model.md | 22 ++++----- src/main/java/com/booleanuk/core/Basket.java | 49 ++++++++++++++----- .../java/com/booleanuk/core/BasketTest.java | 43 +++++++++------- 3 files changed, 72 insertions(+), 42 deletions(-) diff --git a/domain-model.md b/domain-model.md index 26ffc955..c9279df0 100644 --- a/domain-model.md +++ b/domain-model.md @@ -1,17 +1,17 @@ # Basket class -| Member variable | Data type | -|-----------------|------------------------| -| `bagels` | `Hashmap` | -| `basket` | `List` | -| `basketSize` | `int` | +| Member variable | Data type | +|-----------------|-----------------------------------| +| `bagelMenu` | `static Hashmap` | +| `basket` | `ArrayList` | +| `basketSize` | `int` | +| `isManager` | `Boolean` | -| Method | Scenario | Output | -|-----------------------|---------------------------------------------------------------------------------------|------------------------------| -| `addBagel(String)` | Basket not full
Basket is full | Return true
Return false | -| `removeBagel(String)` | Bagel exists in basket
Bagel does not exist in basket | Return true
Return false | -| `getBasketSize()` | | Return basket size | -| `setBasketSize(int)` | Basket capacity is changed to a whole, positive number
Basket capacity is invalid | Return true
Return false | +| 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 15271e09..0d48ea29 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,30 +1,53 @@ package com.booleanuk.core; +import java.util.ArrayList; import java.util.HashMap; -import java.util.List; public class Basket { - int basketSize = 3; + static HashMap bagelMenu = new HashMap(); + static{ + bagelMenu.put("Sesame", 3); + bagelMenu.put("Oat", 3); + bagelMenu.put("Chicken", 5); + bagelMenu.put("Cheese", 4); + } - HashMap bagels = new HashMap<>(); + int basketSize = 5; - String[] basket = new String[basketSize]; + ArrayList basket = new ArrayList<>(); - public Boolean addBagel(String bagel){ - return true; - } + Boolean isManager=false; - public Boolean removeBagel(String bagel){ - return true; + 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 36bc6308..a528a9f8 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -7,9 +7,11 @@ class BasketTest { @Test public void testAddBagel(){ Basket basket = new Basket(); - Assertions.assertTrue(basket.addBagel("Sesame")); - Assertions.assertTrue(basket.addBagel("Oat")); - Assertions.assertFalse(basket.addBagel("Totally not a bagel")); + // 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 @@ -17,39 +19,44 @@ public void testRemoveBagel(){ Basket basket = new Basket(); basket.addBagel("Sesame"); basket.addBagel("Oat"); - Assertions.assertTrue(basket.removeBagel("Sesame")); - Assertions.assertTrue(basket.removeBagel("Oat")); - } - - @Test - public void testGetBasketSize(){ - Basket basket = new Basket(); - basket.basketSize = 3; - Assertions.assertEquals(3, basket.getBasketSize()); + // 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(); - // basket.setBasketSize(3); + // 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.getBasketSize()); + Assertions.assertEquals(3, basket.basketSize); + } @Test public void testFullBasket(){ Basket basket = new Basket(); + basket.isManager=true; basket.setBasketSize(1); - Assertions.assertTrue(basket.addBagel("Sesame")); - Assertions.assertFalse(basket.addBagel("Oat")); + 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"); - Assertions.assertFalse(basket.removeBagel("Oat")); + // 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")); } - }