NTP-3046 | Narayan | Amount format consistency (#12556)

This commit is contained in:
Aditya Narayan Malik
2024-09-23 13:14:53 +05:30
committed by GitHub
parent 8f7bb039a9
commit b753ba2ff5
2 changed files with 75 additions and 1 deletions

View File

@@ -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()

View File

@@ -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())
}
}