diff --git a/domain-model.md b/domain-model.md new file mode 100644 index 0000000..290ef9a --- /dev/null +++ b/domain-model.md @@ -0,0 +1,21 @@ +| Classes | Variables | Methods | Scenario | Outcomes | +|----------------|-------------------------------------|---------------------------------------|-----------------------|----------------------| +| `CashRegister` | `Map weightItem` | `getPriceForWeightItem(int PLUCode)` | Product is in map | Add price to total | +| | `Map barcodeItem` | `getPriceForBarcodeItem(int barcode)` | Product is not in map | Return error message | +| | | | | | +| | `ìnt totalCost` | `getTotalCost()` | Total cost is > 0 | Return total cost | +| | | | Total cost is < 0 | Return error message | +| | | | | | +| | | `addToTotalCost(int price)` | Price is > 0 | Add to totalCost | +| | | | Price is < 0 | Return | + +| Classes | Variables | Methods | Scenario | Outcomes | +|---------------|-------------------------------------------------------------|-----------------------------------------|--------------------------|--------------------------| +| `MembersDesk` | `Map>> shoppingHistory` | `getShoppingHistory(int membersNumber)` | Customer is a member | Return list of purchases | +| | | | Customer is not a member | Return error message | +| | | | | | +| | | `getItemisedReceipt(int receiptNumber)` | Valid receipt number | Return receipt | +| | | | In valid receipt number | Return error message | +| | | | | | + + 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..20c7a7d --- /dev/null +++ b/src/main/java/com/booleanuk/core/Basket.java @@ -0,0 +1,24 @@ +package com.booleanuk.core; + +import java.util.HashMap; + +public class Basket { + private final HashMap items = new HashMap<>(); + + public boolean add(String product, int price) { + if (product.isEmpty() || items.containsKey(product)) { + return false; + } + items.put(product, price); + return true; + } + + public int total() { + int total = 0; + + for (int price : items.values()) { + total += price; + } + return total; + } +} \ 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..e8289ae --- /dev/null +++ b/src/test/java/com/booleanuk/core/BasketTest.java @@ -0,0 +1,38 @@ +package com.booleanuk.core; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class BasketTest { + + Basket basket = new Basket(); + + @Test + public void addMethodExistTest() { + Assertions.assertFalse(basket.add("", 0)); + } + + @Test + public void addItemTest() { + Assertions.assertFalse(basket.add("", 0)); + Assertions.assertTrue(basket.add("Milk", 5)); + Assertions.assertFalse(basket.add("Milk", 5)); + Assertions.assertTrue(basket.add("Bread", 2)); + Assertions.assertTrue(basket.add("Eggs", 3)); + } + + @Test + public void totalTest() { + Assertions.assertTrue(basket.add("Milk", 5)); + Assertions.assertTrue(basket.add("Bread", 2)); + Assertions.assertTrue(basket.add("Eggs", 3)); + Assertions.assertNotEquals(0, basket.total()); + Assertions.assertEquals(10, basket.total()); + + Assertions.assertTrue(basket.add("Apple", 5)); + Assertions.assertEquals(15, basket.total()); + + } + + +}