From 85621facb6d23f294785cec4b7987172315e8a57 Mon Sep 17 00:00:00 2001 From: AlexeyAnufriev Date: Wed, 5 Dec 2018 01:01:58 +0100 Subject: [PATCH] Tax service implementation + tests --- pom.xml | 27 ++++++++++++++++++ .../service/TaxCalculationService.java | 12 +++++++- .../service/TaxCalculationServiceTest.java | 28 +++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/aa/gitbisect/service/TaxCalculationServiceTest.java diff --git a/pom.xml b/pom.xml index a74bace..1937771 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,8 @@ UTF-8 3.8.0 + 2.22.0 + 5.3.2 @@ -23,6 +25,31 @@ 11 + + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + \ No newline at end of file diff --git a/src/main/java/com/aa/gitbisect/service/TaxCalculationService.java b/src/main/java/com/aa/gitbisect/service/TaxCalculationService.java index ac98181..0daa440 100644 --- a/src/main/java/com/aa/gitbisect/service/TaxCalculationService.java +++ b/src/main/java/com/aa/gitbisect/service/TaxCalculationService.java @@ -1,10 +1,20 @@ package com.aa.gitbisect.service; import java.math.BigDecimal; +import java.math.RoundingMode; public class TaxCalculationService { + private static final BigDecimal HUNDRED = BigDecimal.valueOf(100); + private static final RoundingMode ROUNDING_MODE = RoundingMode.HALF_UP; + public BigDecimal getNetSalaryInCurrency(BigDecimal grossSalaryInCurrency, int taxInPercent) { - return null; + BigDecimal taxInCurrency = grossSalaryInCurrency + .multiply(BigDecimal.valueOf(taxInPercent)) + .divide(HUNDRED, ROUNDING_MODE); + + return grossSalaryInCurrency + .subtract(taxInCurrency) + .setScale(2, ROUNDING_MODE); } } diff --git a/src/test/java/com/aa/gitbisect/service/TaxCalculationServiceTest.java b/src/test/java/com/aa/gitbisect/service/TaxCalculationServiceTest.java new file mode 100644 index 0000000..005ed1d --- /dev/null +++ b/src/test/java/com/aa/gitbisect/service/TaxCalculationServiceTest.java @@ -0,0 +1,28 @@ +package com.aa.gitbisect.service; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import java.math.BigDecimal; + +public class TaxCalculationServiceTest { + + private TaxCalculationService taxCalculationService = new TaxCalculationService(); + + @ParameterizedTest + @CsvSource({ + "100.00, 10, 90.00", + "100.00, 3, 97.00", + "123.45, 5, 117.28" + + }) + public void testNetSalaryCalculation( + BigDecimal grossSalaryInCurrency, int taxInPercent, BigDecimal expectedNetSalaryInCurrency) { + + BigDecimal actualNetSalaryInCurrency = + taxCalculationService.getNetSalaryInCurrency(grossSalaryInCurrency, taxInPercent); + + Assertions.assertEquals(expectedNetSalaryInCurrency, actualNetSalaryInCurrency); + } +}