tdd-java-demo
tdd java demo with micro-commits
git clone https://9o.is/git/tdd-java-demo.git
commit 8d9cfd9c2b8c4d54f7e917c2fa1f0f3607ab049d parent b2544d8e8e77d4ab006bff4093d5c466569df03c Author: Jul <jul@9o.is> Date: Wed, 31 Mar 2021 19:27:55 +0800 do not apply discount when multiple items are not met Diffstat:
| M | src/main/java/takehome/Discount.java | | | 5 | +++++ |
| M | src/test/java/takehome/DiscountTest.java | | | 24 | ++++++++++++++++++++++++ |
2 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/src/main/java/takehome/Discount.java b/src/main/java/takehome/Discount.java @@ -14,6 +14,11 @@ public class Discount { this.items.put(item, 1); } + public Discount(double amount, Map<Item, Integer> items) { + this.amount = amount; + this.items = items; + } + public Item getItem() { return getSingleItem(); } diff --git a/src/test/java/takehome/DiscountTest.java b/src/test/java/takehome/DiscountTest.java @@ -13,6 +13,10 @@ class DiscountTest { public static final Item APPLE = new Item("apple", 0.10); public static final Discount APPLE_DISCOUNT = createAppleDiscount(); + public static final Item SOUP = new Item("soup", 0.65); + public static final Item BREAD = new Item("bread", 0.80); + public static final Discount SOUP_BREAD_DISCOUNT = createSoupBreadDiscount(); + @Test void getItem() { assertThat(APPLE_DISCOUNT.getItem(), is(APPLE)); @@ -41,13 +45,33 @@ class DiscountTest { assertThat(APPLE_DISCOUNT.getDiscount(basket), is(0.02)); } + @Test + void multipleItemsNoDiscount() { + Basket basket = createBasketWithSoupBread(0, 0); + assertThat(SOUP_BREAD_DISCOUNT.getDiscount(basket), is(0d)); + } + private Basket createBasketWithApples(int amount) { Map<Item, Integer> amounts = new HashMap<>(); amounts.put(APPLE, amount); return new Basket(amounts); } + private Basket createBasketWithSoupBread(int soupAmount, int breadAmount) { + Map<Item, Integer> amounts = new HashMap<>(); + amounts.put(SOUP, soupAmount); + amounts.put(BREAD, breadAmount); + return new Basket(amounts); + } + private static Discount createAppleDiscount() { return new Discount(0.01, APPLE); } + + private static Discount createSoupBreadDiscount() { + Map<Item, Integer> items = new HashMap<>(); + items.put(SOUP, 2); + items.put(BREAD, 1); + return new Discount(0.40, items); + } } \ No newline at end of file