NTP-3046 | Narayan | Amount format consistency (#12556)
This commit is contained in:
committed by
GitHub
parent
8f7bb039a9
commit
b753ba2ff5
@@ -72,6 +72,7 @@ import com.navi.common.utils.ClickDebounce
|
||||
import com.navi.common.utils.CommonUtils.formattedCurrency
|
||||
import com.navi.common.utils.Constants
|
||||
import com.navi.common.utils.Constants.AT_THE_RATE
|
||||
import com.navi.common.utils.Constants.MINUS
|
||||
import com.navi.common.utils.appendStrings
|
||||
import com.navi.common.utils.capitalize
|
||||
import com.navi.common.utils.get
|
||||
@@ -142,8 +143,38 @@ fun getMaskedAccountNumberWithHyphen(maskedAccountNumber: String): String {
|
||||
return "- $maskedAccountNumber"
|
||||
}
|
||||
|
||||
fun String.removeUnnecessaryDecimal(): String {
|
||||
val parts = this.split(DECIMAL)
|
||||
if (parts.isEmpty()) return this
|
||||
val integerPart = parts[0]
|
||||
|
||||
val decimalPart =
|
||||
if (parts.size > 1) {
|
||||
parts[1].take(2)
|
||||
} else {
|
||||
EMPTY
|
||||
}
|
||||
|
||||
return if (decimalPart.isNotEmpty()) {
|
||||
"$integerPart$DECIMAL$decimalPart"
|
||||
} else {
|
||||
integerPart
|
||||
}
|
||||
}
|
||||
|
||||
fun String.removeUnnecessaryMinus(): String {
|
||||
val hasLeadingMinus = this.startsWith(MINUS)
|
||||
val digitsOnly = this.replace(MINUS, EMPTY)
|
||||
val finalSign = if (hasLeadingMinus) MINUS else EMPTY
|
||||
return "$finalSign$digitsOnly"
|
||||
}
|
||||
|
||||
fun String.filterValidCharacters(): String {
|
||||
return this.filter { it.isDigit() || it == DECIMAL.first() || it == MINUS.first() }
|
||||
}
|
||||
|
||||
fun String.getDisplayableAmount(): String {
|
||||
var amount = this
|
||||
var amount = this.filterValidCharacters().removeUnnecessaryMinus().removeUnnecessaryDecimal()
|
||||
var displayableAmount = ZERO_STRING
|
||||
if (amount.isAmountValid()) {
|
||||
amount = amount.formattedCurrency()
|
||||
|
||||
@@ -7,8 +7,11 @@
|
||||
|
||||
package com.navi.pay.utility
|
||||
|
||||
import com.navi.pay.utils.filterValidCharacters
|
||||
import com.navi.pay.utils.getDisplayableAmount
|
||||
import com.navi.pay.utils.getFormattedAmountWithDecimal
|
||||
import com.navi.pay.utils.removeUnnecessaryDecimal
|
||||
import com.navi.pay.utils.removeUnnecessaryMinus
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
|
||||
@@ -40,6 +43,19 @@ class AmountUtilityUnitTest {
|
||||
assertEquals("0.10", "0.1".getDisplayableAmount())
|
||||
assertEquals("0.10", "0.1".getDisplayableAmount())
|
||||
assertEquals("0", "".getDisplayableAmount())
|
||||
assertEquals("1,23,456", "1,23,456.00".getDisplayableAmount())
|
||||
assertEquals("1,23,456", "1,23,456.00.00".getDisplayableAmount())
|
||||
assertEquals("1,23,456.11", "123,456.11".getDisplayableAmount())
|
||||
assertEquals("1,23,456.11", "+123,456.11".getDisplayableAmount())
|
||||
assertEquals("-1,23,456.11", "-123,456.11".getDisplayableAmount())
|
||||
assertEquals("-123.11", "-------1,23.1111".getDisplayableAmount())
|
||||
assertEquals("-123.11", "----1,--23.1111".getDisplayableAmount())
|
||||
assertEquals("-123.11", "----1,--23.-11-11".getDisplayableAmount())
|
||||
assertEquals("-123.11", "-,-1,,--2,3.1111".getDisplayableAmount())
|
||||
assertEquals("1,23,456.11", "1,23,456.11".getDisplayableAmount().getDisplayableAmount())
|
||||
assertEquals("-1,23,456.11", "-1,23,456.11".getDisplayableAmount().getDisplayableAmount())
|
||||
assertEquals("123.11", "1,23.1111".getDisplayableAmount().getDisplayableAmount())
|
||||
assertEquals("1.20", "1.2.3".getDisplayableAmount().getDisplayableAmount())
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -66,4 +82,31 @@ class AmountUtilityUnitTest {
|
||||
assertEquals("11223456.10", "11223456.10".getFormattedAmountWithDecimal())
|
||||
assertEquals("0.10", "0.1".getFormattedAmountWithDecimal())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun formatAmount_isUnnecessaryMinusRemovedCorrectly() {
|
||||
assertEquals("1", "1".removeUnnecessaryMinus())
|
||||
assertEquals("-1", "-1".removeUnnecessaryMinus())
|
||||
assertEquals("-1", "-1-".removeUnnecessaryMinus())
|
||||
assertEquals("-1.0000", "-1.-0000-".removeUnnecessaryMinus())
|
||||
assertEquals("-", "-----".removeUnnecessaryMinus())
|
||||
assertEquals("12", "1--2".removeUnnecessaryMinus())
|
||||
assertEquals("1.000000", "1.000000".removeUnnecessaryMinus())
|
||||
assertEquals("1,2,3,456", "1,2,3,456".removeUnnecessaryMinus())
|
||||
assertEquals("1,23,456", "1,23,456".removeUnnecessaryMinus())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun formatAmount_isUnnecessaryDecimalRemovedCorrectly() {
|
||||
assertEquals("1", "1".removeUnnecessaryDecimal())
|
||||
assertEquals(".1", ".1".removeUnnecessaryDecimal())
|
||||
assertEquals("1.00", "1.000.0-".removeUnnecessaryDecimal())
|
||||
assertEquals("", "....".removeUnnecessaryDecimal())
|
||||
assertEquals("1.2", "1.2.3.4.5.6.777".removeUnnecessaryDecimal())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun formatAmount_isValidCharactersFilteredCorrectly() {
|
||||
assertEquals("-123456.00", "-1,2abc3,*4^56@.00".filterValidCharacters())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user