tdd-java-demo
tdd java demo with micro-commits
git clone https://9o.is/git/tdd-java-demo.git
commit 0580afc35704013ce0d035609b80c78150b586bd parent bef9897a2a81d538a6b0094f04d67cd4757676ce Author: Jul <jul@9o.is> Date: Thu, 1 Apr 2021 00:31:38 +0800 invalidate discount before start date Diffstat:
| M | src/main/java/takehome/Discount.java | | | 9 | +++++++++ |
| M | src/test/java/takehome/DiscountTest.java | | | 15 | +++++++++++++++ |
2 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/src/main/java/takehome/Discount.java b/src/main/java/takehome/Discount.java @@ -4,6 +4,7 @@ import com.google.common.collect.HashMultiset; import com.google.common.collect.Multiset; import com.google.common.collect.Multisets; +import java.time.LocalDate; import java.util.Arrays; public class Discount { @@ -21,6 +22,10 @@ public class Discount { this.items = HashMultiset.create(Arrays.asList(items)); } + public Discount(double amount, LocalDate startDate, LocalDate endDate, Item... items) { + this(amount, items); + } + public double getAmount() { return amount; } @@ -40,4 +45,8 @@ public class Discount { return amount * occurrences; } + + public boolean isValid(LocalDate date) { + return false; + } } diff --git a/src/test/java/takehome/DiscountTest.java b/src/test/java/takehome/DiscountTest.java @@ -2,6 +2,7 @@ package takehome; import org.junit.jupiter.api.Test; +import java.time.LocalDate; import java.util.HashMap; import java.util.Map; @@ -17,6 +18,10 @@ class DiscountTest { public static final Discount APPLE_DISCOUNT = new Discount(0.01, APPLE); public static final Discount SOUP_BREAD_DISCOUNT = new Discount(0.40, SOUP, SOUP, BREAD); + public static final LocalDate TODAY = LocalDate.now(); + public static final LocalDate TOMORROW = TODAY.plusDays(1); + public static final LocalDate YESTERDAY = TODAY.minusDays(1); + @Test void getAmount() { assertThat(APPLE_DISCOUNT.getAmount(), is(0.01)); @@ -64,6 +69,16 @@ class DiscountTest { assertThat(SOUP_BREAD_DISCOUNT.getDiscount(basket), is(0.80)); } + @Test + void isInvalidBeforeStartDate() { + Discount discount = discountByDate(TODAY, TOMORROW); + assertThat(discount.isValid(YESTERDAY), is(false)); + } + + private Discount discountByDate(LocalDate startDate, LocalDate endDate) { + return new Discount(0.01, startDate, endDate, APPLE); + } + private Basket createBasketWithApples(int amount) { Map<Item, Integer> amounts = new HashMap<>(); amounts.put(APPLE, amount);