From 22e79a045c9298e4f4694247fabf4bc8018944ef Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Mon, 22 Nov 2021 21:18:56 -0500 Subject: [PATCH] Fix boosts made in UGX. --- .../org/signal/core/util/money/FiatMoney.java | 6 +++-- .../signal/core/util/money/FiatMoneyTest.java | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/core-util/src/main/java/org/signal/core/util/money/FiatMoney.java b/core-util/src/main/java/org/signal/core/util/money/FiatMoney.java index cb32a6e1bf..9152ca52ed 100644 --- a/core-util/src/main/java/org/signal/core/util/money/FiatMoney.java +++ b/core-util/src/main/java/org/signal/core/util/money/FiatMoney.java @@ -54,14 +54,16 @@ public class FiatMoney { } /** + * Note: This special cases UGX to act as two decimal. + * * @return amount, in smallest possible units (cents, yen, etc.) */ public @NonNull String getMinimumUnitPrecisionString() { NumberFormat formatter = NumberFormat.getInstance(); formatter.setMaximumFractionDigits(0); formatter.setGroupingUsed(false); - BigDecimal multiplicand = BigDecimal.TEN.pow(currency.getDefaultFractionDigits()); - + + BigDecimal multiplicand = BigDecimal.TEN.pow(currency.getCurrencyCode().equals("UGX") ? 2 : currency.getDefaultFractionDigits()); return formatter.format(amount.multiply(multiplicand)); } diff --git a/core-util/src/test/java/org/signal/core/util/money/FiatMoneyTest.java b/core-util/src/test/java/org/signal/core/util/money/FiatMoneyTest.java index c9f0c0a2b5..bfb25a6ae6 100644 --- a/core-util/src/test/java/org/signal/core/util/money/FiatMoneyTest.java +++ b/core-util/src/test/java/org/signal/core/util/money/FiatMoneyTest.java @@ -57,4 +57,27 @@ public class FiatMoneyTest { assertEquals("100", result); } + @Test + public void given100UGX_whenIGetDefaultPrecisionString_thenIExpect100() { + // GIVEN + FiatMoney fiatMoney = new FiatMoney(BigDecimal.valueOf(100), Currency.getInstance("UGX")); + + // WHEN + String result = fiatMoney.getDefaultPrecisionString(); + + // THEN + assertEquals("100", result); + } + + @Test + public void given100UGX_whenIGetMinimumUnitPrecisionString_thenIExpect10000() { + // GIVEN + FiatMoney fiatMoney = new FiatMoney(BigDecimal.valueOf(100), Currency.getInstance("UGX")); + + // WHEN + String result = fiatMoney.getMinimumUnitPrecisionString(); + + // THEN + assertEquals("10000", result); + } } \ No newline at end of file