loosen scale checking to allow smaller numbers of significant digits (but not larger).
diff --git a/api/src/main/java/io/mifos/individuallending/api/v1/domain/caseinstance/CaseParameters.java b/api/src/main/java/io/mifos/individuallending/api/v1/domain/caseinstance/CaseParameters.java
index 9e5ad0e..5fc2e9c 100644
--- a/api/src/main/java/io/mifos/individuallending/api/v1/domain/caseinstance/CaseParameters.java
+++ b/api/src/main/java/io/mifos/individuallending/api/v1/domain/caseinstance/CaseParameters.java
@@ -31,7 +31,7 @@
* @author Myrle Krantz
*/
@SuppressWarnings({"WeakerAccess", "unused"})
-@ScriptAssert(lang = "javascript", script = "_this.maximumBalance !== null && _this.maximumBalance.scale() == 4")
+@ScriptAssert(lang = "javascript", script = "_this.maximumBalance !== null && _this.maximumBalance.scale() <= 4")
public final class CaseParameters {
@ValidIdentifier
private String customerIdentifier;
diff --git a/api/src/main/java/io/mifos/portfolio/api/v1/domain/InterestRange.java b/api/src/main/java/io/mifos/portfolio/api/v1/domain/InterestRange.java
index 9bb75c4..d119bd7 100644
--- a/api/src/main/java/io/mifos/portfolio/api/v1/domain/InterestRange.java
+++ b/api/src/main/java/io/mifos/portfolio/api/v1/domain/InterestRange.java
@@ -25,7 +25,7 @@
* @author Myrle Krantz
*/
@SuppressWarnings({"WeakerAccess", "unused"})
-@ScriptAssert(lang = "javascript", script = "_this.maximum != null && _this.minimum != null && _this.maximum.compareTo(_this.minimum) >= 0 && _this.minimum.scale() == 2 && _this.maximum.scale() == 2")
+@ScriptAssert(lang = "javascript", script = "_this.maximum != null && _this.minimum != null && _this.maximum.compareTo(_this.minimum) >= 0 && _this.minimum.scale() <= 2 && _this.maximum.scale() <= 2")
public class InterestRange {
@DecimalMin(value = "0.00")
@DecimalMax(value = "999.99")
diff --git a/api/src/test/java/io/mifos/individuallending/api/v1/domain/caseinstance/CaseParametersTest.java b/api/src/test/java/io/mifos/individuallending/api/v1/domain/caseinstance/CaseParametersTest.java
index decfa89..89973c8 100644
--- a/api/src/test/java/io/mifos/individuallending/api/v1/domain/caseinstance/CaseParametersTest.java
+++ b/api/src/test/java/io/mifos/individuallending/api/v1/domain/caseinstance/CaseParametersTest.java
@@ -58,9 +58,12 @@
ret.add(new ValidationTestCase<CaseParameters>("nullBalanceRange")
.adjustment(x -> x.setMaximumBalance(null))
.valid(false));
- ret.add(new ValidationTestCase<CaseParameters>("badBalanceRangeScale")
+ ret.add(new ValidationTestCase<CaseParameters>("tooLargeBalanceRangeScale")
.adjustment(x -> x.setMaximumBalance(BigDecimal.TEN.setScale(5, BigDecimal.ROUND_FLOOR)))
.valid(false));
+ ret.add(new ValidationTestCase<CaseParameters>("smallerBalanceRangeScale")
+ .adjustment(x -> x.setMaximumBalance(BigDecimal.TEN.setScale(3, BigDecimal.ROUND_FLOOR)))
+ .valid(true));
ret.add(new ValidationTestCase<CaseParameters>("invalid payment cycle unit")
.adjustment(x -> x.getPaymentCycle().setTemporalUnit(ChronoUnit.SECONDS))
.valid(false));
diff --git a/api/src/test/java/io/mifos/portfolio/api/v1/domain/InterestRangeTest.java b/api/src/test/java/io/mifos/portfolio/api/v1/domain/InterestRangeTest.java
index 666aeac..0f4a851 100644
--- a/api/src/test/java/io/mifos/portfolio/api/v1/domain/InterestRangeTest.java
+++ b/api/src/test/java/io/mifos/portfolio/api/v1/domain/InterestRangeTest.java
@@ -66,7 +66,14 @@
x.setMaximum(BigDecimal.valueOf(5L).setScale(2, BigDecimal.ROUND_UNNECESSARY));
})
.valid(false));
+ ret.add(new ValidationTestCase<InterestRange>("too large scale")
+ .adjustment(x ->
+ x.setMinimum(x.getMinimum().setScale(3, BigDecimal.ROUND_UNNECESSARY)))
+ .valid(false));
+ ret.add(new ValidationTestCase<InterestRange>("smaller scale")
+ .adjustment(x ->
+ x.setMinimum(x.getMinimum().setScale(1, BigDecimal.ROUND_HALF_EVEN)))
+ .valid(true));
return ret;
}
-
}
\ No newline at end of file