diff --git a/shipping-calculator/src/main/java/com/redhat/shipping/RegionNotFoundException.java b/shipping-calculator/src/main/java/com/redhat/shipping/RegionNotFoundException.java new file mode 100644 index 000000000..c740db792 --- /dev/null +++ b/shipping-calculator/src/main/java/com/redhat/shipping/RegionNotFoundException.java @@ -0,0 +1,5 @@ +package com.redhat.shipping; + +public class RegionNotFoundException extends Exception{ + +} diff --git a/shipping-calculator/src/main/java/com/redhat/shipping/ShippingCalculator.java b/shipping-calculator/src/main/java/com/redhat/shipping/ShippingCalculator.java new file mode 100644 index 000000000..41e99503c --- /dev/null +++ b/shipping-calculator/src/main/java/com/redhat/shipping/ShippingCalculator.java @@ -0,0 +1,24 @@ +package com.redhat.shipping; + +import java.util.HashMap; +import java.util.Map; +public class ShippingCalculator{ + + public static final Map REGIONS = new HashMap<>(); + + public ShippingCalculator(){ + ShippingCalculator.REGIONS.put("NA", 100); + + ShippingCalculator.REGIONS.put("LATAM", 200); + + ShippingCalculator.REGIONS.put("EMEA", 300); + ShippingCalculator.REGIONS.put("APAC", 400); + + } +public int costForRegion(String name) throws RegionNotFoundException{ +if(ShippingCalculator.REGIONS.containsKey(name)){ + return ShippingCalculator.REGIONS.get(name); +} +throw new RegionNotFoundException(); +} +} diff --git a/shipping-calculator/src/test/java/com/redhat/shipping/ShippingCalculatorTest.java b/shipping-calculator/src/test/java/com/redhat/shipping/ShippingCalculatorTest.java index 20bead51d..46ec6f014 100644 --- a/shipping-calculator/src/test/java/com/redhat/shipping/ShippingCalculatorTest.java +++ b/shipping-calculator/src/test/java/com/redhat/shipping/ShippingCalculatorTest.java @@ -6,5 +6,61 @@ public class ShippingCalculatorTest { - // @todo: add tests + +@Test +public void onNARegionTheCostIs() throws RegionNotFoundException { + //Given a shipping calculator + ShippingCalculator calculator = new ShippingCalculator(); + + //When NA is the country region + int calculatedCost = calculator.costForRegion("NA"); + + //Then the shipping cost is +assertEquals(100, calculatedCost); +} + +@Test +public void onLATAMRegionTheCostIs200() throws RegionNotFoundException{ + + //Given a shipping calculator + ShippingCalculator calculator = new ShippingCalculator(); + + //When LATAM is the country region + int calculatedCost = calculator.costForRegion("LATAM"); + + //Then the shipping cost is 200 + assertEquals(200, calculatedCost); +} + +@Test +public void onEMEARegionTheCostIs300() throws RegionNotFoundException{ +//Given a shipping calculator +ShippingCalculator calculator = new ShippingCalculator(); + +//When EMEA is the country region +int calculatedCost = calculator.costForRegion("EMEA"); + +//Then the shipping cost is 300 +assertEquals(300, calculatedCost); +} + +@Test +public void onAPACRegionTheCostIs400() throws RegionNotFoundException{ +//Given a shipping calculator +ShippingCalculator calculator = new ShippingCalculator(); + +//When APAC is the countru region +int calculatedCost = calculator.costForRegion("APAC"); + +//Then the shipping cost is 400 +assertEquals(400, calculatedCost); +} + +@Test +public void onNonSupportedRegionARegionNotFoundExceptionIsRaised(){ +ShippingCalculator calculator = new ShippingCalculator(); +assertThrows(RegionNotFoundException.class, + () -> calculator.costForRegion("Unknown Region") + ); +} }