From 6bcbdfbbce13a8406876062d251731f3fae380bc Mon Sep 17 00:00:00 2001 From: Marcus Ikdal Date: Thu, 9 Jan 2025 09:37:05 +0100 Subject: [PATCH 1/5] added DomainModel.md --- DomainModel.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 DomainModel.md diff --git a/DomainModel.md b/DomainModel.md new file mode 100644 index 0000000..61838cc --- /dev/null +++ b/DomainModel.md @@ -0,0 +1,29 @@ +# Domain Model + +## CohortManager Class + +| Method | Variables | Scenario | Output | +|---|---|---|---| +| | ArrayList\ cohorts | | | +| search(String name) | | Found name in cohorts | return true | +| | | Did not find name in cohorts | return false | + +## ShoppingCart Class + +| Method | Variables | Scenario | Output | +|---|---|---|---| +| | ArrayList\ cart | | | +| getTotalCost() | | valid total cost | return total cost of items in basket | +| | | invalid total cost | return -1 | +| getReceipt() | | valid list of items | return receipt String | +| | | invalid list of items | return null | +| addItem(ShopItem item) | | valid item | add item to cart | +| | | invalid item | throw error| + +## ShopItem Class +| Method | Variables | Scenario | Output | +|---|---|---|---| +| | String name | | | +| | Float price | | | +| getPrice() | | | return price | + From f58f4dd9b17ac61ce2ba233ce877c23721d197bb Mon Sep 17 00:00:00 2001 From: Marcus Ikdal Date: Thu, 9 Jan 2025 10:30:37 +0100 Subject: [PATCH 2/5] implemented tests for add --- src/main/java/com/booleanuk/core/Basket.java | 4 +++ .../com/booleanuk/core/CohortManager.java | 12 ++++++- .../java/com/booleanuk/core/BasketTest.java | 26 ++++++++++++++ .../com/booleanuk/core/CohortManagerTest.java | 34 +++++++++++++++++++ 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/booleanuk/core/Basket.java create mode 100644 src/test/java/com/booleanuk/core/BasketTest.java diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java new file mode 100644 index 0000000..4aab45e --- /dev/null +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -0,0 +1,4 @@ +package com.booleanuk.core; + +public class Basket { +} diff --git a/src/main/java/com/booleanuk/core/CohortManager.java b/src/main/java/com/booleanuk/core/CohortManager.java index 48a1b26..675a2f0 100644 --- a/src/main/java/com/booleanuk/core/CohortManager.java +++ b/src/main/java/com/booleanuk/core/CohortManager.java @@ -1,5 +1,15 @@ package com.booleanuk.core; +import java.util.ArrayList; + public class CohortManager { + private ArrayList cohorts; + + public CohortManager(ArrayList cohorts) { + this.cohorts = cohorts; + } -} + boolean search(String name) { + return cohorts.contains(name); + } +} \ No newline at end of file diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java new file mode 100644 index 0000000..843acec --- /dev/null +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -0,0 +1,26 @@ +package com.booleanuk.core; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class BasketTest { + @Test + void testAddNonExistingItem() { + Basket basket = new Basket(); + String itemName = "orange"; + int price = 5; + + Assertions.assertTrue(basket.add(itemName, price)); + } + + @Test + void testAddExistingItem() { + Basket basket = new Basket(); + String itemName = "orange"; + int price = 5; + + basket.add(itemName, price); + + Assertions.assertFalse(basket.add(itemName, price)); + } +} diff --git a/src/test/java/com/booleanuk/core/CohortManagerTest.java b/src/test/java/com/booleanuk/core/CohortManagerTest.java index 5dea868..8d6094e 100644 --- a/src/test/java/com/booleanuk/core/CohortManagerTest.java +++ b/src/test/java/com/booleanuk/core/CohortManagerTest.java @@ -1,8 +1,42 @@ package com.booleanuk.core; +import java.util.ArrayList; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; class CohortManagerTest { + @Test + public void searchForCohortThatExists() { + // setup + ArrayList cohorts = new ArrayList<>(){{ + add("Robin"); + add("Mathias"); + add("Magnus"); + add("Jonas"); + add("Thomas"); + }}; + CohortManager manager = new CohortManager(cohorts); + String name = "Robin"; + + // execute and verify + Assertions.assertTrue(manager.search(name)); + } + + @Test + public void searchForCohortThatDoesNotExist() { + // setup + ArrayList cohorts = new ArrayList<>(){{ + add("Robin"); + add("Mathias"); + add("Magnus"); + add("Jonas"); + add("Thomas"); + }}; + CohortManager manager = new CohortManager(cohorts); + String name = "Andreas"; + // execute and verify + Assertions.assertFalse(manager.search(name)); + } } From bdd02e3f91ac566892d0d423ef86acef5cd963c0 Mon Sep 17 00:00:00 2001 From: Marcus Ikdal Date: Thu, 9 Jan 2025 10:33:38 +0100 Subject: [PATCH 3/5] implemented add --- src/main/java/com/booleanuk/core/Basket.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index 4aab45e..b2dd08b 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -1,4 +1,19 @@ package com.booleanuk.core; +import java.util.HashMap; + public class Basket { + private HashMap items; + + public Basket() { + items = new HashMap<>(); + } + + boolean add(String product, int price) { + if (items.containsKey(product)) + return false; + + items.put(product, price); + return true; + } } From 05745047fad677480b02db5b3cc60492fa971953 Mon Sep 17 00:00:00 2001 From: Marcus Ikdal Date: Thu, 9 Jan 2025 10:37:01 +0100 Subject: [PATCH 4/5] implemented tests for total --- .../java/com/booleanuk/core/BasketTest.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/test/java/com/booleanuk/core/BasketTest.java b/src/test/java/com/booleanuk/core/BasketTest.java index 843acec..bb0406b 100644 --- a/src/test/java/com/booleanuk/core/BasketTest.java +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -23,4 +23,22 @@ void testAddExistingItem() { Assertions.assertFalse(basket.add(itemName, price)); } + + @Test + void testTotalEmptyBasket() { + Basket basket = new Basket(); + + Assertions.assertEquals(0, basket.total()); + } + + @Test + void testTotal() { + Basket basket = new Basket(); + basket.add("a", 5); + basket.add("b",35); + basket.add("c", 100); + basket.add("d", 70); + + Assertions.assertEquals(210, basket.total()); + } } From 3dbb32de8a0b418591634b8220579fd217108341 Mon Sep 17 00:00:00 2001 From: Marcus Ikdal Date: Thu, 9 Jan 2025 10:39:20 +0100 Subject: [PATCH 5/5] implemented total --- src/main/java/com/booleanuk/core/Basket.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/booleanuk/core/Basket.java b/src/main/java/com/booleanuk/core/Basket.java index b2dd08b..92d19a3 100644 --- a/src/main/java/com/booleanuk/core/Basket.java +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -16,4 +16,14 @@ boolean add(String product, int price) { items.put(product, price); return true; } + + int total() { + int total = 0; + + for (Integer price : items.values()) { + total += price; + } + + return total; + } }