TP-68852 | crash fix for contactInitials (#11117)
Co-authored-by: Aditya Narayan Malik <aditya.narayan@navi.com>
This commit is contained in:
@@ -262,25 +262,25 @@ fun String.initials(): String {
|
||||
}
|
||||
|
||||
fun String.contactInitials(): String {
|
||||
if (this.isBlank()) return ""
|
||||
|
||||
var name = this
|
||||
if (name.isBlank()) return EMPTY
|
||||
|
||||
if (containsOnlyEmoji(name)) return name
|
||||
|
||||
if (containsEmoji(name)) {
|
||||
name = name.replace(Regex("[\\uD83C-\\uDBFF\\uDC00-\\uDFFF]+"), "")
|
||||
name = name.replace(Regex("[\\uD83C-\\uDBFF\\uDC00-\\uDFFF]+"), EMPTY)
|
||||
}
|
||||
|
||||
if (name.length == 1) return name.uppercase()
|
||||
val nameParts = name.trim().split("\\s+".toRegex())
|
||||
if (nameParts.isEmpty()) return ""
|
||||
if (nameParts.isEmpty() || nameParts.all { it.isEmpty() }) return EMPTY
|
||||
|
||||
val firstInitial = nameParts.first().first().uppercase()
|
||||
val firstInitial = nameParts.firstOrNull()?.firstOrNull()?.uppercase() ?: EMPTY
|
||||
val lastInitial =
|
||||
if (nameParts.size == 1) {
|
||||
if (nameParts.first().length > 1) nameParts.first()[1].uppercase() else ""
|
||||
if (nameParts.first().length > 1) nameParts.first()[1].uppercase() else EMPTY
|
||||
} else {
|
||||
nameParts.last().first().uppercase()
|
||||
nameParts.lastOrNull()?.firstOrNull()?.uppercase() ?: EMPTY
|
||||
}
|
||||
|
||||
return "$firstInitial$lastInitial"
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
package com.navi.pay.utility
|
||||
|
||||
import com.navi.pay.utils.contactInitials
|
||||
import com.navi.pay.utils.initials
|
||||
import org.junit.Assert
|
||||
import org.junit.Test
|
||||
@@ -23,3 +24,25 @@ class InitialsUtilityTest {
|
||||
Assert.assertEquals("", "".initials())
|
||||
}
|
||||
}
|
||||
|
||||
class ContactInitialsUtilityTest {
|
||||
|
||||
@Test
|
||||
fun contactInitials() {
|
||||
Assert.assertEquals("JA", "Jahanvi".contactInitials())
|
||||
Assert.assertEquals("JS", "Jahanvi Singh".contactInitials())
|
||||
Assert.assertEquals("JN", "Jahanvi Singh New".contactInitials())
|
||||
Assert.assertEquals("J2", "Jahanvi 2".contactInitials())
|
||||
Assert.assertEquals("JA", "Jahanvi \uD83D\uDE03".contactInitials())
|
||||
Assert.assertEquals("JS", "Jahanvi Singh \uD83D\uDE03".contactInitials())
|
||||
Assert.assertEquals("JN", "Jahanvi Singh New \uD83D\uDE03".contactInitials())
|
||||
Assert.assertEquals("JS", "Jahanvi \uD83D\uDE03 Singh".contactInitials())
|
||||
Assert.assertEquals("J.", "Jahanvi .".contactInitials())
|
||||
Assert.assertEquals(".", ".".contactInitials())
|
||||
Assert.assertEquals("\uD83D\uDE03", "\uD83D\uDE03".contactInitials())
|
||||
Assert.assertEquals("UK", " Ujjwal Kumar ".contactInitials())
|
||||
Assert.assertEquals("UM", " Ujjwal Kumar Maharana ".contactInitials())
|
||||
Assert.assertEquals("", " ".contactInitials())
|
||||
Assert.assertEquals("", "".contactInitials())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ package com.navi.pay.viewmodel
|
||||
|
||||
import androidx.lifecycle.SavedStateHandle
|
||||
import com.navi.base.utils.EMPTY
|
||||
import com.navi.base.utils.ResourceProvider
|
||||
import com.navi.pay.common.connectivity.NaviPayNetworkConnectivity
|
||||
import com.navi.pay.common.mockCoroutinesDispatcherProvider
|
||||
import com.navi.pay.common.mockDeviceInfoProvider
|
||||
@@ -16,6 +17,7 @@ import com.navi.pay.common.model.view.NaviPaySessionHelper
|
||||
import com.navi.pay.common.repository.CommonRepository
|
||||
import com.navi.pay.common.usecase.LinkedAccountsUseCase
|
||||
import com.navi.pay.common.usecase.NaviPayConfigUseCase
|
||||
import com.navi.pay.common.usecase.ValidateVpaUseCase
|
||||
import com.navi.pay.management.common.upiid.model.view.UPIIdInputNextScreenDestination
|
||||
import com.navi.pay.management.common.upiid.model.view.UPIIdScreenData
|
||||
import com.navi.pay.management.common.upiid.viewmodel.UPIIdInputViewModel
|
||||
@@ -33,6 +35,8 @@ class UpiIdViewModelUnitTest {
|
||||
@MockK private lateinit var naviPayNetworkConnectivity: NaviPayNetworkConnectivity
|
||||
@MockK private lateinit var naviPayConfigUseCase: NaviPayConfigUseCase
|
||||
@MockK private lateinit var naviPaySessionHelper: NaviPaySessionHelper
|
||||
@MockK private lateinit var validateVpaUseCase: ValidateVpaUseCase
|
||||
@MockK private lateinit var resourceProvider: ResourceProvider
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
private val coroutineDispatcher = UnconfinedTestDispatcher()
|
||||
@@ -56,17 +60,17 @@ class UpiIdViewModelUnitTest {
|
||||
|
||||
@Test
|
||||
fun upiIdSuggestionsIsListCorrect() {
|
||||
|
||||
val upiIdInputViewModel =
|
||||
UPIIdInputViewModel(
|
||||
savedStateHandle,
|
||||
mockCoroutinesDispatcherProvider(coroutineDispatcher),
|
||||
mockDeviceInfoProvider(),
|
||||
commonRepository,
|
||||
linkedAccountsUseCase,
|
||||
naviPayNetworkConnectivity,
|
||||
naviPayConfigUseCase,
|
||||
naviPaySessionHelper
|
||||
naviPaySessionHelper,
|
||||
validateVpaUseCase,
|
||||
resourceProvider
|
||||
)
|
||||
|
||||
// showSuggestions = false and List Empty Cases
|
||||
@@ -228,11 +232,12 @@ class UpiIdViewModelUnitTest {
|
||||
savedStateHandle,
|
||||
mockCoroutinesDispatcherProvider(coroutineDispatcher),
|
||||
mockDeviceInfoProvider(),
|
||||
commonRepository,
|
||||
linkedAccountsUseCase,
|
||||
naviPayNetworkConnectivity,
|
||||
naviPayConfigUseCase,
|
||||
naviPaySessionHelper
|
||||
naviPaySessionHelper,
|
||||
validateVpaUseCase,
|
||||
resourceProvider
|
||||
)
|
||||
Assert.assertEquals(EMPTY, upiIdInputViewModel.getFormattedUpiIdInput(input = EMPTY))
|
||||
Assert.assertEquals("Adi", upiIdInputViewModel.getFormattedUpiIdInput(input = "Adi"))
|
||||
|
||||
Reference in New Issue
Block a user