From 160f8d36507c9baaa833f0d060d7698b8f47ca5e Mon Sep 17 00:00:00 2001 From: Shivam Goyal Date: Tue, 22 Aug 2023 14:18:34 +0530 Subject: [PATCH] Spotless Base (#7589) --- .../cache/repository/NaviCacheRepository.kt | 41 +- .../com/navi/base/deeplink/DeepLinkManager.kt | 3 +- .../deeplink/listener/DeepLinkListener.kt | 1 + .../java/com/navi/base/model/AppLaunchData.kt | 4 +- .../java/com/navi/base/model/ClickableText.kt | 21 +- .../main/java/com/navi/base/model/CtaData.kt | 2 +- .../java/com/navi/base/model/DropOffInfo.kt | 2 +- .../com/navi/base/model/GenericAnalytics.kt | 8 +- .../com/navi/base/model/NaviClickAction.kt | 20 +- .../main/java/com/navi/base/model/Padding.kt | 4 +- .../navi/base/security/AlgorithmKeyEnum.kt | 8 +- .../com/navi/base/security/AppKeyHelper.kt | 42 +- .../interceptor/EncryptionHashInterceptor.kt | 44 +- .../navi/base/sharedpref/PreferenceManager.kt | 5 +- .../com/navi/base/utils/AppLaunchUtils.kt | 11 +- .../java/com/navi/base/utils/BaseUtils.kt | 69 ++- .../com/navi/base/utils/CurrencyConverter.kt | 2 +- .../java/com/navi/base/utils/CurrencyUtil.kt | 1 + .../java/com/navi/base/utils/DateUtils.kt | 25 +- .../src/main/java/com/navi/base/utils/Ext.kt | 99 ++--- .../com/navi/base/utils/AppLaunchUtilsTest.kt | 27 +- .../java/com/navi/base/utils/BaseUtilsTest.kt | 399 +++++++++++++----- .../test/java/com/navi/base/utils/ExtTest.kt | 67 +-- 23 files changed, 527 insertions(+), 378 deletions(-) diff --git a/navi-base/src/main/java/com/navi/base/cache/repository/NaviCacheRepository.kt b/navi-base/src/main/java/com/navi/base/cache/repository/NaviCacheRepository.kt index 0822165e92..35f82bfe8f 100644 --- a/navi-base/src/main/java/com/navi/base/cache/repository/NaviCacheRepository.kt +++ b/navi-base/src/main/java/com/navi/base/cache/repository/NaviCacheRepository.kt @@ -12,9 +12,7 @@ import com.navi.base.cache.model.NaviCacheAltSourceEntity import com.navi.base.cache.model.NaviCacheEntity import javax.inject.Inject -class NaviCacheRepository @Inject constructor( - private val naviCacheDao: NaviCacheDao -) { +class NaviCacheRepository @Inject constructor(private val naviCacheDao: NaviCacheDao) { suspend fun save(naviCacheEntity: NaviCacheEntity) { naviCacheDao.insert(naviCacheEntity = naviCacheEntity) @@ -40,7 +38,8 @@ class NaviCacheRepository @Inject constructor( val currentValueInDB = get(key = key) - if (checkIfDBValueIsValidElseRemoveEntry( + if ( + checkIfDBValueIsValidElseRemoveEntry( naviCacheEntity = currentValueInDB, version = version, key = key @@ -52,19 +51,23 @@ class NaviCacheRepository @Inject constructor( // DB value is invalid val naviCacheValueEntityFromAltSource = getDataFromAltSource.invoke() - if (!naviCacheValueEntityFromAltSource.isSuccess || naviCacheValueEntityFromAltSource.value == null) { // alternate source data invalid + if ( + !naviCacheValueEntityFromAltSource.isSuccess || + naviCacheValueEntityFromAltSource.value == null + ) { // alternate source data invalid return null } // Got data from alt source - val naviCacheEntity = NaviCacheEntity( - key = key, - value = naviCacheValueEntityFromAltSource.value, - version = naviCacheValueEntityFromAltSource.version ?: 1, - ttl = naviCacheValueEntityFromAltSource.ttl, - clearOnLogout = naviCacheValueEntityFromAltSource.clearOnLogout, - metaData = naviCacheValueEntityFromAltSource.metaData - ) + val naviCacheEntity = + NaviCacheEntity( + key = key, + value = naviCacheValueEntityFromAltSource.value, + version = naviCacheValueEntityFromAltSource.version ?: 1, + ttl = naviCacheValueEntityFromAltSource.ttl, + clearOnLogout = naviCacheValueEntityFromAltSource.clearOnLogout, + metaData = naviCacheValueEntityFromAltSource.metaData + ) save(naviCacheEntity = naviCacheEntity) @@ -76,16 +79,18 @@ class NaviCacheRepository @Inject constructor( version: Long?, key: String ): Boolean { - if (naviCacheEntity == null) // value not present - return false + if (naviCacheEntity == null) // value not present + return false - if (version != null && naviCacheEntity.version < version) { // outdated version + if (version != null && naviCacheEntity.version < version) { // outdated version clear(key = key) return false } - if (naviCacheEntity.ttl != -1L && - ((System.currentTimeMillis() - naviCacheEntity.updatedAt) > naviCacheEntity.ttl) // ttl expired + if ( + naviCacheEntity.ttl != -1L && + ((System.currentTimeMillis() - naviCacheEntity.updatedAt) > + naviCacheEntity.ttl) // ttl expired ) { clear(key = key) return false diff --git a/navi-base/src/main/java/com/navi/base/deeplink/DeepLinkManager.kt b/navi-base/src/main/java/com/navi/base/deeplink/DeepLinkManager.kt index 7e94edb9ad..138f927d29 100644 --- a/navi-base/src/main/java/com/navi/base/deeplink/DeepLinkManager.kt +++ b/navi-base/src/main/java/com/navi/base/deeplink/DeepLinkManager.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2021-2022 by Navi Technologies Limited + * * Copyright © 2021-2023 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -11,6 +11,7 @@ import com.navi.base.deeplink.listener.DeepLinkListener object DeepLinkManager { private var deepLinkListener: DeepLinkListener? = null + fun init(deepLinkListenerTemp: DeepLinkListener) { deepLinkListener = deepLinkListenerTemp } diff --git a/navi-base/src/main/java/com/navi/base/deeplink/listener/DeepLinkListener.kt b/navi-base/src/main/java/com/navi/base/deeplink/listener/DeepLinkListener.kt index 6a1473d86d..755878acaa 100644 --- a/navi-base/src/main/java/com/navi/base/deeplink/listener/DeepLinkListener.kt +++ b/navi-base/src/main/java/com/navi/base/deeplink/listener/DeepLinkListener.kt @@ -21,6 +21,7 @@ interface DeepLinkListener { requestCode: Int? = null, clearTask: Boolean? = false ) + fun fetchBranchSDKData( activity: Activity, deeplink: String, diff --git a/navi-base/src/main/java/com/navi/base/model/AppLaunchData.kt b/navi-base/src/main/java/com/navi/base/model/AppLaunchData.kt index 2ddd955fef..fa5243deb7 100644 --- a/navi-base/src/main/java/com/navi/base/model/AppLaunchData.kt +++ b/navi-base/src/main/java/com/navi/base/model/AppLaunchData.kt @@ -7,6 +7,4 @@ package com.navi.base.model -data class AppLaunchData( - var properties: MutableMap? = null -) +data class AppLaunchData(var properties: MutableMap? = null) diff --git a/navi-base/src/main/java/com/navi/base/model/ClickableText.kt b/navi-base/src/main/java/com/navi/base/model/ClickableText.kt index 0b4fb638cc..f5b9639a70 100644 --- a/navi-base/src/main/java/com/navi/base/model/ClickableText.kt +++ b/navi-base/src/main/java/com/navi/base/model/ClickableText.kt @@ -14,15 +14,11 @@ import kotlinx.parcelize.RawValue @Parcelize open class ClickableText( - @SerializedName("text") - val text: String? = null, - @SerializedName("type") - val type: String? = null, - @SerializedName("subtype") - val subtype: String? = null, - @SerializedName("data") - val data:@RawValue Any? = null -): Parcelable + @SerializedName("text") val text: String? = null, + @SerializedName("type") val type: String? = null, + @SerializedName("subtype") val subtype: String? = null, + @SerializedName("data") val data: @RawValue Any? = null +) : Parcelable data class EmailSubjectBodyResponse( @SerializedName("recipientEmailIds") val recipientEmailIds: List? = null, @@ -30,12 +26,9 @@ data class EmailSubjectBodyResponse( @SerializedName("body") val body: String? = null ) -data class PhoneNumberResponse( - @SerializedName("number") - val number: String? = null -) +data class PhoneNumberResponse(@SerializedName("number") val number: String? = null) -enum class ClickableTextType{ +enum class ClickableTextType { EMAIL, PHONE, DEEPLINK, diff --git a/navi-base/src/main/java/com/navi/base/model/CtaData.kt b/navi-base/src/main/java/com/navi/base/model/CtaData.kt index e7e1091b55..771f2cabe9 100644 --- a/navi-base/src/main/java/com/navi/base/model/CtaData.kt +++ b/navi-base/src/main/java/com/navi/base/model/CtaData.kt @@ -30,4 +30,4 @@ data class CtaData( var bundle: Bundle? = null, @SerializedName("buttonState") val buttonState: String? = null, @SerializedName("needsResult") val needsResult: Boolean? = null - ) : NaviClickAction(), Parcelable +) : NaviClickAction(), Parcelable diff --git a/navi-base/src/main/java/com/navi/base/model/DropOffInfo.kt b/navi-base/src/main/java/com/navi/base/model/DropOffInfo.kt index 8fa3181c0b..34c13c02c6 100644 --- a/navi-base/src/main/java/com/navi/base/model/DropOffInfo.kt +++ b/navi-base/src/main/java/com/navi/base/model/DropOffInfo.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022-2023 by Navi Technologies Limited + * * Copyright © 2023 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ diff --git a/navi-base/src/main/java/com/navi/base/model/GenericAnalytics.kt b/navi-base/src/main/java/com/navi/base/model/GenericAnalytics.kt index 51e5cc97b9..9c4f6c293c 100644 --- a/navi-base/src/main/java/com/navi/base/model/GenericAnalytics.kt +++ b/navi-base/src/main/java/com/navi/base/model/GenericAnalytics.kt @@ -9,13 +9,15 @@ package com.navi.base.model import android.os.Parcelable import com.google.gson.annotations.SerializedName -import kotlinx.parcelize.Parcelize import java.io.Serializable +import kotlinx.parcelize.Parcelize @Parcelize data class GenericAnalytics( - @SerializedName("viewed", alternate = ["viewedData"]) val viewedData: GenericAnalyticsData? = null, - @SerializedName("clicked", alternate = ["clickedData"]) val clickedData: GenericAnalyticsData? = null + @SerializedName("viewed", alternate = ["viewedData"]) + val viewedData: GenericAnalyticsData? = null, + @SerializedName("clicked", alternate = ["clickedData"]) + val clickedData: GenericAnalyticsData? = null ) : Serializable, Parcelable @Parcelize diff --git a/navi-base/src/main/java/com/navi/base/model/NaviClickAction.kt b/navi-base/src/main/java/com/navi/base/model/NaviClickAction.kt index 5823c105ec..4e12363fe5 100644 --- a/navi-base/src/main/java/com/navi/base/model/NaviClickAction.kt +++ b/navi-base/src/main/java/com/navi/base/model/NaviClickAction.kt @@ -10,8 +10,8 @@ package com.navi.base.model import android.os.Bundle import android.os.Parcelable import com.google.gson.annotations.SerializedName -import kotlinx.parcelize.Parcelize import java.io.Serializable +import kotlinx.parcelize.Parcelize open class NaviClickAction @@ -50,8 +50,11 @@ data class ActionData( data class NaviWidgetInfoClick(val widgetId: String? = null) : NaviClickAction() -data class NaviBenefitsItemClick(val ctaData: CtaData? = null, val position: Int, val itemDescription: String?) : - NaviClickAction() +data class NaviBenefitsItemClick( + val ctaData: CtaData? = null, + val position: Int, + val itemDescription: String? +) : NaviClickAction() data class NaviWidgetClickWithActionData( val widgetId: String? = null, @@ -60,10 +63,8 @@ data class NaviWidgetClickWithActionData( val isFinish: Boolean = false ) : NaviClickAction() -data class RefereeBottomSheet( - val bundle: Bundle, - val actionData: ActionData? = null -) : NaviClickAction() +data class RefereeBottomSheet(val bundle: Bundle, val actionData: ActionData? = null) : + NaviClickAction() data class NaviWidgetClickWithCtaData( val widgetId: String? = null, @@ -71,7 +72,10 @@ data class NaviWidgetClickWithCtaData( val ctaData: CtaData? = null ) : NaviClickAction() -data class FundDocumentDownloadWidgetClickAction(val downloadUrl: String ,val metaData: GenericAnalytics?) : NaviClickAction() +data class FundDocumentDownloadWidgetClickAction( + val downloadUrl: String, + val metaData: GenericAnalytics? +) : NaviClickAction() data class ValueWidgetClickAction(val value: String? = null, val identifierKey: String? = null) : NaviClickAction() diff --git a/navi-base/src/main/java/com/navi/base/model/Padding.kt b/navi-base/src/main/java/com/navi/base/model/Padding.kt index 81b5713c64..21fdc277fa 100644 --- a/navi-base/src/main/java/com/navi/base/model/Padding.kt +++ b/navi-base/src/main/java/com/navi/base/model/Padding.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022 by Navi Technologies Limited + * * Copyright © 2022-2023 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -17,4 +17,4 @@ data class Padding( @SerializedName("endDp") var endDp: Float = 0.0f, @SerializedName("topDp") var topDp: Float = 0.0f, @SerializedName("bottomDp") var bottomDp: Float = 0.0f -): Parcelable +) : Parcelable diff --git a/navi-base/src/main/java/com/navi/base/security/AlgorithmKeyEnum.kt b/navi-base/src/main/java/com/navi/base/security/AlgorithmKeyEnum.kt index 48d760231d..de081ee2d5 100644 --- a/navi-base/src/main/java/com/navi/base/security/AlgorithmKeyEnum.kt +++ b/navi-base/src/main/java/com/navi/base/security/AlgorithmKeyEnum.kt @@ -1,9 +1,7 @@ /* * - * * - * * * Copyright © 2022 by Navi Technologies Private Limited - * * * All rights reserved. Strictly confidential - * * + * * Copyright © 2022-2023 by Navi Technologies Limited + * * All rights reserved. Strictly confidential * */ @@ -13,4 +11,4 @@ enum class AlgorithmKeyEnum { SHA1, SHA256, MD5 -} \ No newline at end of file +} diff --git a/navi-base/src/main/java/com/navi/base/security/AppKeyHelper.kt b/navi-base/src/main/java/com/navi/base/security/AppKeyHelper.kt index c84f7789f9..51f1aeddc2 100644 --- a/navi-base/src/main/java/com/navi/base/security/AppKeyHelper.kt +++ b/navi-base/src/main/java/com/navi/base/security/AppKeyHelper.kt @@ -1,9 +1,7 @@ /* * - * * - * * * Copyright © 2022 by Navi Technologies Private Limited - * * * All rights reserved. Strictly confidential - * * + * * Copyright © 2023 by Navi Technologies Limited + * * All rights reserved. Strictly confidential * */ @@ -21,9 +19,7 @@ import java.security.NoSuchAlgorithmException object AppKeyHelper { - /** - * @param key string like: SHA1, SHA256, MD5. - */ + /** @param key string like: SHA1, SHA256, MD5. */ @SuppressLint("PackageManagerGetSignatures") fun getKey(context: Context, key: String, applicationId: String): String? = try { @@ -57,21 +53,18 @@ object AppKeyHelper { ): ArrayList { val generatedKeyList: ArrayList = ArrayList() try { - val signatures = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - context.packageManager.getPackageInfo( - applicationId, - PackageManager.GET_SIGNING_CERTIFICATES - ) - .signingInfo - .apkContentsSigners - } else { - @Suppress("DEPRECATION") - context.packageManager - .getPackageInfo( - applicationId, - PackageManager.GET_SIGNATURES - ).signatures - } + val signatures = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + context.packageManager + .getPackageInfo(applicationId, PackageManager.GET_SIGNING_CERTIFICATES) + .signingInfo + .apkContentsSigners + } else { + @Suppress("DEPRECATION") + context.packageManager + .getPackageInfo(applicationId, PackageManager.GET_SIGNATURES) + .signatures + } for (signature in signatures) { val md: MessageDigest = MessageDigest.getInstance(key) @@ -87,8 +80,7 @@ object AppKeyHelper { } generatedKeyList.add(toRet.toString()) } - } catch (_: Exception) { - } + } catch (_: Exception) {} return generatedKeyList } -} \ No newline at end of file +} diff --git a/navi-base/src/main/java/com/navi/base/security/interceptor/EncryptionHashInterceptor.kt b/navi-base/src/main/java/com/navi/base/security/interceptor/EncryptionHashInterceptor.kt index 5068bf936d..277a2e7d74 100644 --- a/navi-base/src/main/java/com/navi/base/security/interceptor/EncryptionHashInterceptor.kt +++ b/navi-base/src/main/java/com/navi/base/security/interceptor/EncryptionHashInterceptor.kt @@ -1,9 +1,7 @@ /* * - * * - * * * Copyright © 2023 by Navi Technologies Private Limited - * * * All rights reserved. Strictly confidential - * * + * * Copyright © 2023 by Navi Technologies Limited + * * All rights reserved. Strictly confidential * */ @@ -32,25 +30,28 @@ class EncryptionHashInterceptor(private val context: Context) : Interceptor { val buffer = Buffer() body.writeTo(buffer) val epochTime = System.currentTimeMillis().toString() - val key = getKey( - deviceId = BaseUtils.getDeviceId(context), - sha256 = AppKeyHelper.getKey( - context, - AlgorithmKeyEnum.SHA256.name, - context.packageName - ).orEmpty(), - timeStamp = epochTime, - packageName = context.packageName - ) - val headerBuilder = request.headers.newBuilder().apply { - add(HEADER_SIGNATURE, key) - add(HEADER_EPOCH, epochTime) - } + val key = + getKey( + deviceId = BaseUtils.getDeviceId(context), + sha256 = + AppKeyHelper.getKey( + context, + AlgorithmKeyEnum.SHA256.name, + context.packageName + ) + .orEmpty(), + timeStamp = epochTime, + packageName = context.packageName + ) + val headerBuilder = + request.headers.newBuilder().apply { + add(HEADER_SIGNATURE, key) + add(HEADER_EPOCH, epochTime) + } request = request.newBuilder().headers(headerBuilder.build()).build() chain.proceed(request) - } ?: run { - chain.proceed(request) } + ?: run { chain.proceed(request) } } private external fun getKey( @@ -59,5 +60,4 @@ class EncryptionHashInterceptor(private val context: Context) : Interceptor { timeStamp: String, packageName: String ): String - -} \ No newline at end of file +} diff --git a/navi-base/src/main/java/com/navi/base/sharedpref/PreferenceManager.kt b/navi-base/src/main/java/com/navi/base/sharedpref/PreferenceManager.kt index e405d33eac..a0d9186963 100644 --- a/navi-base/src/main/java/com/navi/base/sharedpref/PreferenceManager.kt +++ b/navi-base/src/main/java/com/navi/base/sharedpref/PreferenceManager.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2019-2022 by Navi Technologies Limited + * * Copyright © 2019-2023 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -65,7 +65,6 @@ object PreferenceManager { EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM ) - } catch (e: Exception) { // NaviTrackEvent.trackEventOnClickStream( // "secure_shared_pref_crash", @@ -99,6 +98,7 @@ object PreferenceManager { editor.putInt(key, value) editor.apply() } + fun getIntPreferenceApp(key: String): Int { return sharedPreferencesForApp.getInt(key, 0) } @@ -108,6 +108,7 @@ object PreferenceManager { editor.putInt(key, value) editor.apply() } + fun getBooleanPreference(key: String, defValue: Boolean = false): Boolean { return sharedPreferencesForSession.getBoolean(key, defValue) } diff --git a/navi-base/src/main/java/com/navi/base/utils/AppLaunchUtils.kt b/navi-base/src/main/java/com/navi/base/utils/AppLaunchUtils.kt index fd04e19f9c..8f413770d5 100644 --- a/navi-base/src/main/java/com/navi/base/utils/AppLaunchUtils.kt +++ b/navi-base/src/main/java/com/navi/base/utils/AppLaunchUtils.kt @@ -10,7 +10,6 @@ package com.navi.base.utils import com.navi.base.model.AppLaunchData import com.navi.base.sharedpref.PreferenceManager - object AppLaunchUtils { private const val APP_RELAUNCHED = "APP_RELAUNCHED" const val HOME_ITEMS_LAUNCH = "HOME_ITEMS_LAUNCH" @@ -25,10 +24,7 @@ object AppLaunchUtils { fun setAppOpenStatus(key: String) { val appLaunchData = - PreferenceManager.getObjectPrefrences( - APP_RELAUNCHED, - AppLaunchData::class.java - ) + PreferenceManager.getObjectPrefrences(APP_RELAUNCHED, AppLaunchData::class.java) if (appLaunchData?.properties == null) { appLaunchData?.properties = mutableMapOf() } @@ -38,10 +34,7 @@ object AppLaunchUtils { fun isLandingFirstTimeAfterAppOpen(key: String): Boolean { val appLaunchData = - PreferenceManager.getObjectPrefrences( - APP_RELAUNCHED, - AppLaunchData::class.java - ) + PreferenceManager.getObjectPrefrences(APP_RELAUNCHED, AppLaunchData::class.java) return if (appLaunchData == null) { true } else { diff --git a/navi-base/src/main/java/com/navi/base/utils/BaseUtils.kt b/navi-base/src/main/java/com/navi/base/utils/BaseUtils.kt index 09fb9bf2df..8f7d541565 100644 --- a/navi-base/src/main/java/com/navi/base/utils/BaseUtils.kt +++ b/navi-base/src/main/java/com/navi/base/utils/BaseUtils.kt @@ -168,7 +168,8 @@ object BaseUtils { "MOBILE_CHANGE" -> "When User changed mobile number for Account discovery" "MOBILE_VERIFIED" -> "When User's new mobile number is verified using OTP" "CONSENT_GRANTED" -> "When User grants consent successfully" - "CONSENT_REJECTED" -> "When User rejects consent i.e. does not proceed with FIP selection" + "CONSENT_REJECTED" -> + "When User rejects consent i.e. does not proceed with FIP selection" "ALTERNATIVE_CHOSEN" -> "When User selects alternative mechanism instead of AA" "DATA_REQUESTED" -> "When data is requested from AA" "DATA_RECEIVED" -> "When data is received from AA" @@ -190,7 +191,6 @@ object BaseUtils { return count > 1 } - fun cleanDecimalString(decimalString: String): String { if (decimalString.contains('.')) { var decimalValue = decimalString @@ -201,7 +201,7 @@ object BaseUtils { return decimalString } - fun stripTrailingCharacters(str:String, char:Char):String{ + fun stripTrailingCharacters(str: String, char: Char): String { val sb: StringBuilder = StringBuilder(str) while (sb.length > 0 && sb[sb.length - 1] == char) { sb.setLength(sb.length - 1) @@ -234,7 +234,8 @@ object BaseUtils { if (decimalValue.length == 1) { decimalValue += "0" } - return numberToWords(result).plus(" and ") + return numberToWords(result) + .plus(" and ") .plus(numberToWords(decimalValue, "paise", "paise").lowercase()) } else { return numberToWords(splitValues[0]) @@ -378,15 +379,17 @@ object BaseUtils { updatedPulseBaseUrl: String?, context: Context? ) { - val updateBaseUrl = checkDiffAndSaveDataInSharedPreference( - sharedPrefKey = UPDATED_BASE_URL, - updatedValue = updatedBaseUrl - ) + val updateBaseUrl = + checkDiffAndSaveDataInSharedPreference( + sharedPrefKey = UPDATED_BASE_URL, + updatedValue = updatedBaseUrl + ) - val updatePulseBaseUrl = checkDiffAndSaveDataInSharedPreference( - sharedPrefKey = UPDATED_PULSE_BASE_URL, - updatedValue = updatedPulseBaseUrl - ) + val updatePulseBaseUrl = + checkDiffAndSaveDataInSharedPreference( + sharedPrefKey = UPDATED_PULSE_BASE_URL, + updatedValue = updatedPulseBaseUrl + ) if (updateBaseUrl || updatePulseBaseUrl) { triggerAppRestart(context = context) @@ -419,13 +422,12 @@ object BaseUtils { context?.startActivity(mainIntent) try { Runtime.getRuntime().exit(0) - } catch (e: Exception) { - } + } catch (e: Exception) {} } /** - * This function formats the entered digits in a group of 5 - * For ex: any phone number will be formatted as: 12345 67890 + * This function formats the entered digits in a group of 5 For ex: any phone number will be + * formatted as: 12345 67890 */ fun phoneFormat(value: String): String { var tempValue = value @@ -444,15 +446,14 @@ object BaseUtils { } /** - * This function formats the entered amount with commas - * For ex: 1000000 will be formatted as 10,00,000 + * This function formats the entered amount with commas For ex: 1000000 will be formatted as + * 10,00,000 */ fun moneyFormat(value: String): String { var tempValue = value.toDoubleWithSafe().toLong().toString() var result = EMPTY tempValue = tempValue.replace(COMMA, EMPTY) - if (tempValue.isEmpty()) - return result + if (tempValue.isEmpty()) return result val lastDigit = tempValue[tempValue.length - 1] val len = tempValue.length - 1 var nDigits = 0 @@ -466,27 +467,23 @@ object BaseUtils { return result + lastDigit } - fun saveUpdatedBaseUrlAndRestart( - updatedBaseUrl: String?, - context: Context? - ) { - val updateBaseUrl = checkDiffAndSaveDataInSharedPreference( - sharedPrefKey = UPDATED_BASE_URL, - updatedValue = updatedBaseUrl - ) + fun saveUpdatedBaseUrlAndRestart(updatedBaseUrl: String?, context: Context?) { + val updateBaseUrl = + checkDiffAndSaveDataInSharedPreference( + sharedPrefKey = UPDATED_BASE_URL, + updatedValue = updatedBaseUrl + ) if (updateBaseUrl) { triggerAppRestart(context = context) } } - fun saveUpdatedVersionCodeAndRestart( - updatedVersionCode: String?, - context: Context? - ) { - val updatedVersionCode = checkDiffAndSaveDataInSharedPreference( - sharedPrefKey = UPDATED_VERSION_CODE, - updatedValue = updatedVersionCode - ) + fun saveUpdatedVersionCodeAndRestart(updatedVersionCode: String?, context: Context?) { + val updatedVersionCode = + checkDiffAndSaveDataInSharedPreference( + sharedPrefKey = UPDATED_VERSION_CODE, + updatedValue = updatedVersionCode + ) if (updatedVersionCode) { triggerAppRestart(context = context) } diff --git a/navi-base/src/main/java/com/navi/base/utils/CurrencyConverter.kt b/navi-base/src/main/java/com/navi/base/utils/CurrencyConverter.kt index 10eab5e16b..5df45a5e64 100644 --- a/navi-base/src/main/java/com/navi/base/utils/CurrencyConverter.kt +++ b/navi-base/src/main/java/com/navi/base/utils/CurrencyConverter.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022 by Navi Technologies Limited + * * Copyright © 2022-2023 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ diff --git a/navi-base/src/main/java/com/navi/base/utils/CurrencyUtil.kt b/navi-base/src/main/java/com/navi/base/utils/CurrencyUtil.kt index c321175d23..c07f1117a8 100644 --- a/navi-base/src/main/java/com/navi/base/utils/CurrencyUtil.kt +++ b/navi-base/src/main/java/com/navi/base/utils/CurrencyUtil.kt @@ -16,6 +16,7 @@ object CurrencyUtils { private const val LAKHS = "Lakhs" private const val LAKH = "Lakh" private const val RUPEE_SYMBOL = "\u20B9" + fun getNormalizedAmount(amount: BigDecimal): String { return getNormalizedAmount(amount, true) } diff --git a/navi-base/src/main/java/com/navi/base/utils/DateUtils.kt b/navi-base/src/main/java/com/navi/base/utils/DateUtils.kt index 1b2d8b4b10..0f1e247b75 100644 --- a/navi-base/src/main/java/com/navi/base/utils/DateUtils.kt +++ b/navi-base/src/main/java/com/navi/base/utils/DateUtils.kt @@ -1,3 +1,10 @@ +/* + * + * * Copyright © 2023 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + package com.navi.base.utils import org.joda.time.DateTime @@ -5,18 +12,12 @@ import org.joda.time.format.DateTimeFormat object DateUtils { - fun getFormattedDateTimeAsStringFromDateTimeObject( - dateTime: DateTime, - format: String - ): String { + fun getFormattedDateTimeAsStringFromDateTimeObject(dateTime: DateTime, format: String): String { val dateTimeFormatter = DateTimeFormat.forPattern(format) return dateTimeFormatter.print(dateTime) } - fun getDateTimeObjectFromDateTimeString( - dateTime: String, - format: String - ): DateTime { + fun getDateTimeObjectFromDateTimeString(dateTime: String, format: String): DateTime { val dateTimeFormatter = DateTimeFormat.forPattern(format) return dateTimeFormatter.parseDateTime(dateTime) } @@ -26,14 +27,12 @@ object DateUtils { sourceFormat: String, destinationFormat: String ): String { - val dateTimeObject = getDateTimeObjectFromDateTimeString( - dateTime = dateTime, - format = sourceFormat - ) + val dateTimeObject = + getDateTimeObjectFromDateTimeString(dateTime = dateTime, format = sourceFormat) return getFormattedDateTimeAsStringFromDateTimeObject( dateTime = dateTimeObject, format = destinationFormat ) } -} \ No newline at end of file +} diff --git a/navi-base/src/main/java/com/navi/base/utils/Ext.kt b/navi-base/src/main/java/com/navi/base/utils/Ext.kt index c5f372c53d..49c28ac26d 100644 --- a/navi-base/src/main/java/com/navi/base/utils/Ext.kt +++ b/navi-base/src/main/java/com/navi/base/utils/Ext.kt @@ -98,61 +98,62 @@ fun Float.getLesserMultiple(x: Int): Float { } val showLoaderWhenGetSet = mutableSetOf("/pre-quotes/") -val doNotShowLoaderWhenPostSet = mutableSetOf( - USER_DEVICE_DATA_LOCATION_API, - USER_DEVICE_DATA_APP_API, - "/v1/cards/", - "/customer-device/customer/me/data-ingestion-status", - "/navipay/customer", - "/navipay/bind-device", - "/navipay/banks/remove-account", - "/navipay/list-banks", - "/navipay/banks/fetch-accounts", - "/navipay/bind-device", - "/navipay/account/linked-accounts", - "/navipay/account/otp", - "/navipay/npci/token", - "/navipay/account/balance", - "/navipay/v1/txn/sendMoney", - "/navipay/mandates/list", - "/navipay/v1/vpa/validate", - "/navipay/v1/txn/history", - "/navipay/complaints/list", - "/navipay/complaints/type", - "/navipay/v1/txn/requestMoney", - "/navipay/v1/txn/listPending", - "/navipay/v1/txn/status", - "/navipay/v1/vpa/blockAndSpam", - "/navipay/v1/vpa/block/list", - "/navipay/v1/vpa/unblock", - "/navipay/v1/txn/history/mandate", - "/navipay/v1/txn/approve-decline", - "/navipay/mandates/create", - "/navipay/mandates/review", - "/navipay/mandates/pause", - "/navipay/mandates/revoke", - "/navipay/mandates/status", - "/navipay/upiMapper/listUpiNumbers", - "/navipay/upiMapper/update", - "/navipay/upiMapper/changeVpa", - "/navipay/upiMapper/check", - "/navipay/upiMapper/create", - "/navipay/complaints/raise", - "/navipay/complaints/status", - "/navipay/mandates/detail", - "/navipay/v1/txn/additional-details", - "/navipay/qr/parse", - "/navipay/requestId/fetch", - "/navipay/v1/uiTron", - "/navipay/phone-number/vpa" -) +val doNotShowLoaderWhenPostSet = + mutableSetOf( + USER_DEVICE_DATA_LOCATION_API, + USER_DEVICE_DATA_APP_API, + "/v1/cards/", + "/customer-device/customer/me/data-ingestion-status", + "/navipay/customer", + "/navipay/bind-device", + "/navipay/banks/remove-account", + "/navipay/list-banks", + "/navipay/banks/fetch-accounts", + "/navipay/bind-device", + "/navipay/account/linked-accounts", + "/navipay/account/otp", + "/navipay/npci/token", + "/navipay/account/balance", + "/navipay/v1/txn/sendMoney", + "/navipay/mandates/list", + "/navipay/v1/vpa/validate", + "/navipay/v1/txn/history", + "/navipay/complaints/list", + "/navipay/complaints/type", + "/navipay/v1/txn/requestMoney", + "/navipay/v1/txn/listPending", + "/navipay/v1/txn/status", + "/navipay/v1/vpa/blockAndSpam", + "/navipay/v1/vpa/block/list", + "/navipay/v1/vpa/unblock", + "/navipay/v1/txn/history/mandate", + "/navipay/v1/txn/approve-decline", + "/navipay/mandates/create", + "/navipay/mandates/review", + "/navipay/mandates/pause", + "/navipay/mandates/revoke", + "/navipay/mandates/status", + "/navipay/upiMapper/listUpiNumbers", + "/navipay/upiMapper/update", + "/navipay/upiMapper/changeVpa", + "/navipay/upiMapper/check", + "/navipay/upiMapper/create", + "/navipay/complaints/raise", + "/navipay/complaints/status", + "/navipay/mandates/detail", + "/navipay/v1/txn/additional-details", + "/navipay/qr/parse", + "/navipay/requestId/fetch", + "/navipay/v1/uiTron", + "/navipay/phone-number/vpa" + ) fun isDataNeedsToUpdate(method: String, url: String, moduleName: String = ""): Boolean { if (method == "GET") { return isContains(showLoaderWhenGetSet, url) } - //module name enum is not available in base, so added string check + // module name enum is not available in base, so added string check if (moduleName == "NAVIPAY") { return !endsWith(doNotShowLoaderWhenPostSet, url) } diff --git a/navi-base/src/test/java/com/navi/base/utils/AppLaunchUtilsTest.kt b/navi-base/src/test/java/com/navi/base/utils/AppLaunchUtilsTest.kt index c0d07a503a..be611ad1dd 100644 --- a/navi-base/src/test/java/com/navi/base/utils/AppLaunchUtilsTest.kt +++ b/navi-base/src/test/java/com/navi/base/utils/AppLaunchUtilsTest.kt @@ -24,30 +24,29 @@ class AppLaunchUtilsTest { @Test fun resetAppOpenOnLaunch() { - every { PreferenceManager.setObjectPreference("APP_RELAUNCHED", AppLaunchData())} just runs + every { PreferenceManager.setObjectPreference("APP_RELAUNCHED", AppLaunchData()) } just runs AppLaunchUtils.resetAppOpenOnLaunch() - every { PreferenceManager.getObjectPrefrences("APP_RELAUNCHED", AppLaunchData::class.java) } returns AppLaunchData() + every { + PreferenceManager.getObjectPrefrences("APP_RELAUNCHED", AppLaunchData::class.java) + } returns AppLaunchData() assertEquals(true, AppLaunchUtils.isLandingFirstTimeAfterAppOpen("home")) } - @Test fun isLandingFirstTimeAfterAppOpen() { - every { PreferenceManager.getObjectPrefrences("APP_RELAUNCHED", AppLaunchData::class.java) } returns null + every { + PreferenceManager.getObjectPrefrences("APP_RELAUNCHED", AppLaunchData::class.java) + } returns null assertEquals(true, AppLaunchUtils.isLandingFirstTimeAfterAppOpen("home")) - every { PreferenceManager.getObjectPrefrences("APP_RELAUNCHED", AppLaunchData::class.java) } returns AppLaunchData( - properties = mutableMapOf( - Pair("home","true") - ) - ) + every { + PreferenceManager.getObjectPrefrences("APP_RELAUNCHED", AppLaunchData::class.java) + } returns AppLaunchData(properties = mutableMapOf(Pair("home", "true"))) assertEquals(false, AppLaunchUtils.isLandingFirstTimeAfterAppOpen("home")) - every { PreferenceManager.getObjectPrefrences("APP_RELAUNCHED", AppLaunchData::class.java) } returns AppLaunchData( - properties = mutableMapOf( - Pair("home","false") - ) - ) + every { + PreferenceManager.getObjectPrefrences("APP_RELAUNCHED", AppLaunchData::class.java) + } returns AppLaunchData(properties = mutableMapOf(Pair("home", "false"))) assertEquals(true, AppLaunchUtils.isLandingFirstTimeAfterAppOpen("home")) } diff --git a/navi-base/src/test/java/com/navi/base/utils/BaseUtilsTest.kt b/navi-base/src/test/java/com/navi/base/utils/BaseUtilsTest.kt index b96334e9cc..3c99aff32f 100644 --- a/navi-base/src/test/java/com/navi/base/utils/BaseUtilsTest.kt +++ b/navi-base/src/test/java/com/navi/base/utils/BaseUtilsTest.kt @@ -18,218 +18,387 @@ import org.junit.Assert import org.junit.Before import org.junit.Test - class BaseUtilsTest { - lateinit var context:Context - @MockK - lateinit var connectivityManager:ConnectivityManager + lateinit var context: Context + @MockK lateinit var connectivityManager: ConnectivityManager @Before fun setUp() { MockKAnnotations.init(this) mockkObject(PreferenceManager) context = mockk(relaxed = true) - } @Test - fun isUserLoggedIn_secureStringNonNull_returnTrue(){ - every { PreferenceManager.getSecureString(CommonPrefConstants.SESSION_TOKEN) } returns "dfasdfasd341234dfasasdf" + fun isUserLoggedIn_secureStringNonNull_returnTrue() { + every { PreferenceManager.getSecureString(CommonPrefConstants.SESSION_TOKEN) } returns + "dfasdfasd341234dfasasdf" Assert.assertEquals(true, BaseUtils.isUserLoggedIn()) } @Test - fun isUserLoggedIn_secureStringNull_stringPreferenceNull_returnFalse(){ + fun isUserLoggedIn_secureStringNull_stringPreferenceNull_returnFalse() { every { PreferenceManager.getSecureString(CommonPrefConstants.SESSION_TOKEN) } returns null - every { PreferenceManager.getStringPreference(CommonPrefConstants.SESSION_TOKEN) } returns null + every { PreferenceManager.getStringPreference(CommonPrefConstants.SESSION_TOKEN) } returns + null Assert.assertEquals(false, BaseUtils.isUserLoggedIn()) } @Test - fun isUserLoggedIn_secureStringNull_stringPreferenceNonNull_returnTrue(){ + fun isUserLoggedIn_secureStringNull_stringPreferenceNonNull_returnTrue() { every { PreferenceManager.getSecureString(CommonPrefConstants.SESSION_TOKEN) } returns null - every { PreferenceManager.getStringPreference(CommonPrefConstants.SESSION_TOKEN) } returns "addsf34432423dafsa" + every { PreferenceManager.getStringPreference(CommonPrefConstants.SESSION_TOKEN) } returns + "addsf34432423dafsa" Assert.assertEquals(true, BaseUtils.isUserLoggedIn()) } @Test - fun getSessionToken_secureStringNonNull_returnTrue(){ - every { PreferenceManager.getSecureString(CommonPrefConstants.SESSION_TOKEN) } returns "dfasdfasd341234dfasasdf" + fun getSessionToken_secureStringNonNull_returnTrue() { + every { PreferenceManager.getSecureString(CommonPrefConstants.SESSION_TOKEN) } returns + "dfasdfasd341234dfasasdf" Assert.assertEquals("dfasdfasd341234dfasasdf", BaseUtils.getSessionToken()) } @Test - fun getSessionToken_secureStringNull_stringPreferenceNonNull_returnTrue(){ + fun getSessionToken_secureStringNull_stringPreferenceNonNull_returnTrue() { every { PreferenceManager.getSecureString(CommonPrefConstants.SESSION_TOKEN) } returns null - every { PreferenceManager.getStringPreference(CommonPrefConstants.SESSION_TOKEN) } returns "dfasdfasd341234dfasasdf" + every { PreferenceManager.getStringPreference(CommonPrefConstants.SESSION_TOKEN) } returns + "dfasdfasd341234dfasasdf" Assert.assertEquals("dfasdfasd341234dfasasdf", BaseUtils.getSessionToken()) } @Test - fun getSessionToken_secureStringNull_stringPreferenceNull_returnNull(){ + fun getSessionToken_secureStringNull_stringPreferenceNull_returnNull() { every { PreferenceManager.getSecureString(CommonPrefConstants.SESSION_TOKEN) } returns null - every { PreferenceManager.getStringPreference(CommonPrefConstants.SESSION_TOKEN) } returns null + every { PreferenceManager.getStringPreference(CommonPrefConstants.SESSION_TOKEN) } returns + null Assert.assertEquals(null, BaseUtils.getSessionToken()) } @Test - fun getPhoneNumber_secureStringNonNull_returnTrue(){ - every { PreferenceManager.getSecureString(CommonPrefConstants.PHONE_NUMBER) } returns "6666612345" + fun getPhoneNumber_secureStringNonNull_returnTrue() { + every { PreferenceManager.getSecureString(CommonPrefConstants.PHONE_NUMBER) } returns + "6666612345" Assert.assertEquals("6666612345", BaseUtils.getPhoneNumber()) } @Test - fun getPhoneNumber_secureStringNull_stringPreferenceNonNull_returnTrue(){ + fun getPhoneNumber_secureStringNull_stringPreferenceNonNull_returnTrue() { every { PreferenceManager.getSecureString(CommonPrefConstants.PHONE_NUMBER) } returns null - every { PreferenceManager.getStringPreference(CommonPrefConstants.PHONE_NUMBER) } returns "6666612345" + every { PreferenceManager.getStringPreference(CommonPrefConstants.PHONE_NUMBER) } returns + "6666612345" Assert.assertEquals("6666612345", BaseUtils.getPhoneNumber()) } @Test - fun getPhoneNumber_secureStringNull_stringPreferenceNull_returnNull(){ + fun getPhoneNumber_secureStringNull_stringPreferenceNull_returnNull() { every { PreferenceManager.getSecureString(CommonPrefConstants.PHONE_NUMBER) } returns null - every { PreferenceManager.getStringPreference(CommonPrefConstants.PHONE_NUMBER) } returns null + every { PreferenceManager.getStringPreference(CommonPrefConstants.PHONE_NUMBER) } returns + null Assert.assertEquals(null, BaseUtils.getPhoneNumber()) } @Test - fun getEmail_secureStringNonNull_returnTrue(){ - every { PreferenceManager.getSecureString(CommonPrefConstants.EMAIL) } returns "test@navi.com" + fun getEmail_secureStringNonNull_returnTrue() { + every { PreferenceManager.getSecureString(CommonPrefConstants.EMAIL) } returns + "test@navi.com" Assert.assertEquals("test@navi.com", BaseUtils.getEmail()) } @Test - fun getEmail_secureStringNull_stringPreferenceNonNull_returnTrue(){ + fun getEmail_secureStringNull_stringPreferenceNonNull_returnTrue() { every { PreferenceManager.getSecureString(CommonPrefConstants.EMAIL) } returns null - every { PreferenceManager.getStringPreference(CommonPrefConstants.EMAIL) } returns "test@navi.com" + every { PreferenceManager.getStringPreference(CommonPrefConstants.EMAIL) } returns + "test@navi.com" Assert.assertEquals("test@navi.com", BaseUtils.getEmail()) } @Test - fun getEmail_secureStringNull_stringPreferenceNull_returnNull(){ + fun getEmail_secureStringNull_stringPreferenceNull_returnNull() { every { PreferenceManager.getSecureString(CommonPrefConstants.EMAIL) } returns null every { PreferenceManager.getStringPreference(CommonPrefConstants.EMAIL) } returns null Assert.assertEquals(null, BaseUtils.getEmail()) } @Test - fun isNetworkAvailable_returnTrue(){ + fun isNetworkAvailable_returnTrue() { every { context.getSystemService(Context.CONNECTIVITY_SERVICE) } returns connectivityManager every { connectivityManager.activeNetworkInfo?.isConnected } returns true Assert.assertEquals(true, BaseUtils.isNetworkAvailable(context)) } @Test - fun isNetworkAvailable_returnFalse(){ + fun isNetworkAvailable_returnFalse() { every { context.getSystemService(Context.CONNECTIVITY_SERVICE) } returns connectivityManager every { connectivityManager.activeNetworkInfo?.isConnected } returns false Assert.assertEquals(false, BaseUtils.isNetworkAvailable(context)) } @Test - fun isNetworkAvailable_connectivityManagerNull_returnFalse(){ + fun isNetworkAvailable_connectivityManagerNull_returnFalse() { Assert.assertEquals(false, BaseUtils.isNetworkAvailable(context)) } @Test - fun isFirebaseTokenRefreshed_returnTrue(){ - every { PreferenceManager.getBooleanPreferenceApp(CommonPrefConstants.IS_FIREBASE_TOKEN_REFRESHED) } returns true + fun isFirebaseTokenRefreshed_returnTrue() { + every { + PreferenceManager.getBooleanPreferenceApp( + CommonPrefConstants.IS_FIREBASE_TOKEN_REFRESHED + ) + } returns true Assert.assertEquals(true, BaseUtils.isFirebaseTokenRefreshed()) } @Test - fun isFirebaseTokenRefreshed_returnFalse(){ - every { PreferenceManager.getBooleanPreferenceApp(CommonPrefConstants.IS_FIREBASE_TOKEN_REFRESHED) } returns false + fun isFirebaseTokenRefreshed_returnFalse() { + every { + PreferenceManager.getBooleanPreferenceApp( + CommonPrefConstants.IS_FIREBASE_TOKEN_REFRESHED + ) + } returns false Assert.assertEquals(false, BaseUtils.isFirebaseTokenRefreshed()) } @Test - fun getPhoneNumberWithCountryCode_numberWithoutPrefix_returnTrue(){ + fun getPhoneNumberWithCountryCode_numberWithoutPrefix_returnTrue() { every { BaseUtils.getPhoneNumber() } returns "6666612345" Assert.assertEquals("+91 6666612345", BaseUtils.getPhoneNumberWithCountryCode()) } @Test - fun getPhoneNumberWithCountryCode_numberWithPrefix_returnTrue(){ + fun getPhoneNumberWithCountryCode_numberWithPrefix_returnTrue() { every { BaseUtils.getPhoneNumber() } returns "+91 6666612345" Assert.assertEquals("+91 6666612345", BaseUtils.getPhoneNumberWithCountryCode()) - //TODO: Query about testing scenarios + // TODO: Query about testing scenarios } @Test - fun testGetDigioExceptionReasonForAadhaarOtp(){ + fun testGetDigioExceptionReasonForAadhaarOtp() { Assert.assertEquals("Reason Unknown", BaseUtils.getDigioExceptionReasonForAadhaarOtp(null)) Assert.assertEquals("Reason Unknown", BaseUtils.getDigioExceptionReasonForAadhaarOtp(1000)) Assert.assertEquals("Invalid Input", BaseUtils.getDigioExceptionReasonForAadhaarOtp(1001)) - Assert.assertEquals("Init not called yet.", BaseUtils.getDigioExceptionReasonForAadhaarOtp(1002)) + Assert.assertEquals( + "Init not called yet.", + BaseUtils.getDigioExceptionReasonForAadhaarOtp(1002) + ) Assert.assertEquals("User Cancelled", BaseUtils.getDigioExceptionReasonForAadhaarOtp(1003)) - Assert.assertEquals("Internal Error, Try after some time", BaseUtils.getDigioExceptionReasonForAadhaarOtp(1004)) - Assert.assertEquals("Internet not connected", BaseUtils.getDigioExceptionReasonForAadhaarOtp(1005)) - Assert.assertEquals("Server Error, Try after some time", BaseUtils.getDigioExceptionReasonForAadhaarOtp(1006)) - Assert.assertEquals("Error from UIDAI", BaseUtils.getDigioExceptionReasonForAadhaarOtp(1007)) - Assert.assertEquals("Authentication Failed", BaseUtils.getDigioExceptionReasonForAadhaarOtp(1008)) + Assert.assertEquals( + "Internal Error, Try after some time", + BaseUtils.getDigioExceptionReasonForAadhaarOtp(1004) + ) + Assert.assertEquals( + "Internet not connected", + BaseUtils.getDigioExceptionReasonForAadhaarOtp(1005) + ) + Assert.assertEquals( + "Server Error, Try after some time", + BaseUtils.getDigioExceptionReasonForAadhaarOtp(1006) + ) + Assert.assertEquals( + "Error from UIDAI", + BaseUtils.getDigioExceptionReasonForAadhaarOtp(1007) + ) + Assert.assertEquals( + "Authentication Failed", + BaseUtils.getDigioExceptionReasonForAadhaarOtp(1008) + ) } @Test - fun testGetHyperVergeReasonForSelfieVerification(){ - Assert.assertEquals("INTERNAL_SDK_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(2)) - Assert.assertEquals("OPERATION_CANCELLED_BY_USER_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(3)) - Assert.assertEquals("PERMISSIONS_NOT_GRANTED_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(4)) + fun testGetHyperVergeReasonForSelfieVerification() { + Assert.assertEquals( + "INTERNAL_SDK_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(2) + ) + Assert.assertEquals( + "OPERATION_CANCELLED_BY_USER_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(3) + ) + Assert.assertEquals( + "PERMISSIONS_NOT_GRANTED_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(4) + ) Assert.assertEquals("HARDWARE_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(5)) Assert.assertEquals("INPUT_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(6)) - Assert.assertEquals("QR_PARSER_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(7)) - Assert.assertEquals("LOCATION_PERMISSION_NOT_AVAILABLE_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(8)) - Assert.assertEquals("INITIALIZATION_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(11)) + Assert.assertEquals( + "QR_PARSER_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(7) + ) + Assert.assertEquals( + "LOCATION_PERMISSION_NOT_AVAILABLE_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(8) + ) + Assert.assertEquals( + "INITIALIZATION_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(11) + ) Assert.assertEquals("NETWORK_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(12)) - Assert.assertEquals("INTERNAL_SERVER_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(14)) - Assert.assertEquals("SSL_CONNECT_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(15)) - Assert.assertEquals("ACTIVE_SESSION_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(16)) - Assert.assertEquals("TRANSACTION_ID_EMPTY", BaseUtils.getHyperVergeReasonForSelfieVerification(17)) - Assert.assertEquals("SIGNATURE_FAILED_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(18)) - Assert.assertEquals("FACE_DETECTION_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(22)) - Assert.assertEquals("BLURRY_FACE_DETECTION_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(23)) - Assert.assertEquals("INSTRUCTION_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(31)) - Assert.assertEquals("QR_SCANNER_ERROR", BaseUtils.getHyperVergeReasonForSelfieVerification(32)) - Assert.assertEquals("GPS_ACCESS_DENIED", BaseUtils.getHyperVergeReasonForSelfieVerification(33)) + Assert.assertEquals( + "INTERNAL_SERVER_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(14) + ) + Assert.assertEquals( + "SSL_CONNECT_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(15) + ) + Assert.assertEquals( + "ACTIVE_SESSION_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(16) + ) + Assert.assertEquals( + "TRANSACTION_ID_EMPTY", + BaseUtils.getHyperVergeReasonForSelfieVerification(17) + ) + Assert.assertEquals( + "SIGNATURE_FAILED_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(18) + ) + Assert.assertEquals( + "FACE_DETECTION_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(22) + ) + Assert.assertEquals( + "BLURRY_FACE_DETECTION_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(23) + ) + Assert.assertEquals( + "INSTRUCTION_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(31) + ) + Assert.assertEquals( + "QR_SCANNER_ERROR", + BaseUtils.getHyperVergeReasonForSelfieVerification(32) + ) + Assert.assertEquals( + "GPS_ACCESS_DENIED", + BaseUtils.getHyperVergeReasonForSelfieVerification(33) + ) Assert.assertEquals("REASON_UNKNOWN", BaseUtils.getHyperVergeReasonForSelfieVerification(1)) - Assert.assertEquals("REASON_UNKNOWN", BaseUtils.getHyperVergeReasonForSelfieVerification(10)) - Assert.assertEquals("REASON_UNKNOWN", BaseUtils.getHyperVergeReasonForSelfieVerification(null)) + Assert.assertEquals( + "REASON_UNKNOWN", + BaseUtils.getHyperVergeReasonForSelfieVerification(10) + ) + Assert.assertEquals( + "REASON_UNKNOWN", + BaseUtils.getHyperVergeReasonForSelfieVerification(null) + ) } @Test - fun testGetFinarkeinEventDescription(){ - Assert.assertEquals("User has opened Anubhav journey", BaseUtils.getFinarkeinEventDescription("OPEN")) - Assert.assertEquals("Recoverable error occurred in the Anubhav flow", BaseUtils.getFinarkeinEventDescription("ERROR")) - Assert.assertEquals("Event is not handled by Anubhab SDK", BaseUtils.getFinarkeinEventDescription("UNKNOWN")) - Assert.assertEquals("User has exited without completing journey", BaseUtils.getFinarkeinEventDescription("EXIT")) - Assert.assertEquals("User selected a FIP in the Anubhav flow", BaseUtils.getFinarkeinEventDescription("FIP_SELECTED")) - Assert.assertEquals("When AA is auto-selected based on User/FIU preference", BaseUtils.getFinarkeinEventDescription("AA_SELECTED")) - Assert.assertEquals("When AA has triggered the verification OTP to User", BaseUtils.getFinarkeinEventDescription("AA_OTP_SENT")) - Assert.assertEquals("When AA is unable to send OTP to User", BaseUtils.getFinarkeinEventDescription("AA_OTP_FAILED")) - Assert.assertEquals("Enter OTP is invalid", BaseUtils.getFinarkeinEventDescription("AA_OTP_INVALID")) - Assert.assertEquals("When OPT is verified successfully", BaseUtils.getFinarkeinEventDescription("AA_OTP_VERIFIED")) - Assert.assertEquals("When AA is not reachable", BaseUtils.getFinarkeinEventDescription("AA_UNREACHABLE")) - Assert.assertEquals("When FIP list is successfully displayed to User", BaseUtils.getFinarkeinEventDescription("FIP_RENDERED")) - Assert.assertEquals("When User account(s) is discovered in the FIP", BaseUtils.getFinarkeinEventDescription("ACCOUNT_DISCOVERED")) - Assert.assertEquals("When User account(s) is not discovered in the FIP", BaseUtils.getFinarkeinEventDescription("ACCOUNT_NOT_DISCOVERED")) - Assert.assertEquals("When User links account successfully", BaseUtils.getFinarkeinEventDescription("ACCOUNT_LINKED")) - Assert.assertEquals("When User changed mobile number for Account discovery", BaseUtils.getFinarkeinEventDescription("MOBILE_CHANGE")) - Assert.assertEquals("When User's new mobile number is verified using OTP", BaseUtils.getFinarkeinEventDescription("MOBILE_VERIFIED")) - Assert.assertEquals("When User grants consent successfully", BaseUtils.getFinarkeinEventDescription("CONSENT_GRANTED")) - Assert.assertEquals("When User rejects consent i.e. does not proceed with FIP selection", BaseUtils.getFinarkeinEventDescription("CONSENT_REJECTED")) - Assert.assertEquals("When User selects alternative mechanism instead of AA", BaseUtils.getFinarkeinEventDescription("ALTERNATIVE_CHOSEN")) - Assert.assertEquals("When data is requested from AA", BaseUtils.getFinarkeinEventDescription("DATA_REQUESTED")) - Assert.assertEquals("When data is received from AA", BaseUtils.getFinarkeinEventDescription("DATA_RECEIVED")) - Assert.assertEquals("When received data is valid as per set rules", BaseUtils.getFinarkeinEventDescription("DATA_VALID")) - Assert.assertEquals("When received data is invalid as per set rules", BaseUtils.getFinarkeinEventDescription("DATA_INVALID")) - Assert.assertEquals("When FIP sends an error", BaseUtils.getFinarkeinEventDescription("FIP_ERROR")) - Assert.assertEquals("When AA sends an error", BaseUtils.getFinarkeinEventDescription("AA_ERROR")) + fun testGetFinarkeinEventDescription() { + Assert.assertEquals( + "User has opened Anubhav journey", + BaseUtils.getFinarkeinEventDescription("OPEN") + ) + Assert.assertEquals( + "Recoverable error occurred in the Anubhav flow", + BaseUtils.getFinarkeinEventDescription("ERROR") + ) + Assert.assertEquals( + "Event is not handled by Anubhab SDK", + BaseUtils.getFinarkeinEventDescription("UNKNOWN") + ) + Assert.assertEquals( + "User has exited without completing journey", + BaseUtils.getFinarkeinEventDescription("EXIT") + ) + Assert.assertEquals( + "User selected a FIP in the Anubhav flow", + BaseUtils.getFinarkeinEventDescription("FIP_SELECTED") + ) + Assert.assertEquals( + "When AA is auto-selected based on User/FIU preference", + BaseUtils.getFinarkeinEventDescription("AA_SELECTED") + ) + Assert.assertEquals( + "When AA has triggered the verification OTP to User", + BaseUtils.getFinarkeinEventDescription("AA_OTP_SENT") + ) + Assert.assertEquals( + "When AA is unable to send OTP to User", + BaseUtils.getFinarkeinEventDescription("AA_OTP_FAILED") + ) + Assert.assertEquals( + "Enter OTP is invalid", + BaseUtils.getFinarkeinEventDescription("AA_OTP_INVALID") + ) + Assert.assertEquals( + "When OPT is verified successfully", + BaseUtils.getFinarkeinEventDescription("AA_OTP_VERIFIED") + ) + Assert.assertEquals( + "When AA is not reachable", + BaseUtils.getFinarkeinEventDescription("AA_UNREACHABLE") + ) + Assert.assertEquals( + "When FIP list is successfully displayed to User", + BaseUtils.getFinarkeinEventDescription("FIP_RENDERED") + ) + Assert.assertEquals( + "When User account(s) is discovered in the FIP", + BaseUtils.getFinarkeinEventDescription("ACCOUNT_DISCOVERED") + ) + Assert.assertEquals( + "When User account(s) is not discovered in the FIP", + BaseUtils.getFinarkeinEventDescription("ACCOUNT_NOT_DISCOVERED") + ) + Assert.assertEquals( + "When User links account successfully", + BaseUtils.getFinarkeinEventDescription("ACCOUNT_LINKED") + ) + Assert.assertEquals( + "When User changed mobile number for Account discovery", + BaseUtils.getFinarkeinEventDescription("MOBILE_CHANGE") + ) + Assert.assertEquals( + "When User's new mobile number is verified using OTP", + BaseUtils.getFinarkeinEventDescription("MOBILE_VERIFIED") + ) + Assert.assertEquals( + "When User grants consent successfully", + BaseUtils.getFinarkeinEventDescription("CONSENT_GRANTED") + ) + Assert.assertEquals( + "When User rejects consent i.e. does not proceed with FIP selection", + BaseUtils.getFinarkeinEventDescription("CONSENT_REJECTED") + ) + Assert.assertEquals( + "When User selects alternative mechanism instead of AA", + BaseUtils.getFinarkeinEventDescription("ALTERNATIVE_CHOSEN") + ) + Assert.assertEquals( + "When data is requested from AA", + BaseUtils.getFinarkeinEventDescription("DATA_REQUESTED") + ) + Assert.assertEquals( + "When data is received from AA", + BaseUtils.getFinarkeinEventDescription("DATA_RECEIVED") + ) + Assert.assertEquals( + "When received data is valid as per set rules", + BaseUtils.getFinarkeinEventDescription("DATA_VALID") + ) + Assert.assertEquals( + "When received data is invalid as per set rules", + BaseUtils.getFinarkeinEventDescription("DATA_INVALID") + ) + Assert.assertEquals( + "When FIP sends an error", + BaseUtils.getFinarkeinEventDescription("FIP_ERROR") + ) + Assert.assertEquals( + "When AA sends an error", + BaseUtils.getFinarkeinEventDescription("AA_ERROR") + ) Assert.assertEquals("Reason Unknown", BaseUtils.getFinarkeinEventDescription(null)) - Assert.assertEquals("Reason Unknown", BaseUtils.getFinarkeinEventDescription("UNKNOWN_REASON_CODE")) + Assert.assertEquals( + "Reason Unknown", + BaseUtils.getFinarkeinEventDescription("UNKNOWN_REASON_CODE") + ) } @Test - fun testNumberToWords(){ + fun testNumberToWords() { Assert.assertEquals("Zero rupees", BaseUtils.numberToWords("0")) Assert.assertEquals("One rupee", BaseUtils.numberToWords("1")) Assert.assertEquals("Two rupees", BaseUtils.numberToWords("2")) @@ -266,32 +435,49 @@ class BaseUtilsTest { Assert.assertEquals("One hundred fifty five rupees", BaseUtils.numberToWords("155")) Assert.assertEquals("Two thousand five rupees", BaseUtils.numberToWords("2005")) Assert.assertEquals("Thirty two thousand seven rupees", BaseUtils.numberToWords("32007")) - Assert.assertEquals("Two lakh thirty four thousand five hundred sixty seven rupees", BaseUtils.numberToWords("234567")) - Assert.assertEquals("Thirty two lakh thirty four thousand five hundred sixty seven rupees", BaseUtils.numberToWords("3234567")) - Assert.assertEquals("Eight crore twenty three lakh forty five thousand six hundred seventy seven rupees", BaseUtils.numberToWords("82345677")) - Assert.assertEquals("Seventy eight crore twenty three lakh forty five thousand six hundred seventy seven rupees", BaseUtils.numberToWords("782345677")) + Assert.assertEquals( + "Two lakh thirty four thousand five hundred sixty seven rupees", + BaseUtils.numberToWords("234567") + ) + Assert.assertEquals( + "Thirty two lakh thirty four thousand five hundred sixty seven rupees", + BaseUtils.numberToWords("3234567") + ) + Assert.assertEquals( + "Eight crore twenty three lakh forty five thousand six hundred seventy seven rupees", + BaseUtils.numberToWords("82345677") + ) + Assert.assertEquals( + "Seventy eight crore twenty three lakh forty five thousand six hundred seventy seven rupees", + BaseUtils.numberToWords("782345677") + ) Assert.assertEquals(EMPTY, BaseUtils.numberToWords("10000345678")) Assert.assertEquals(EMPTY, BaseUtils.numberToWords("absd123123")) - Assert.assertEquals("Two thousand five rupees and fifty six paise", BaseUtils.numberToWords("2005.56", BaseUtils.isWholeNumber(2005.56))) - Assert.assertEquals("Two thousand five rupees", BaseUtils.numberToWords("2005.0", BaseUtils.isWholeNumber(2005.0))) - + Assert.assertEquals( + "Two thousand five rupees and fifty six paise", + BaseUtils.numberToWords("2005.56", BaseUtils.isWholeNumber(2005.56)) + ) + Assert.assertEquals( + "Two thousand five rupees", + BaseUtils.numberToWords("2005.0", BaseUtils.isWholeNumber(2005.0)) + ) } @Test - fun testIsWholeNumber(){ + fun testIsWholeNumber() { Assert.assertEquals(true, BaseUtils.isWholeNumber(1000.0)) Assert.assertEquals(false, BaseUtils.isWholeNumber(25000.67)) } @Test - fun testHasMultipleDots(){ + fun testHasMultipleDots() { Assert.assertEquals(true, BaseUtils.hasMultipleDots("1000.1.0")) Assert.assertEquals(false, BaseUtils.hasMultipleDots("25000.67")) Assert.assertEquals(false, BaseUtils.hasMultipleDots("25000")) } @Test - fun testCleanDecimalString(){ + fun testCleanDecimalString() { Assert.assertEquals("1000", BaseUtils.cleanDecimalString("1000.0")) Assert.assertEquals("1000", BaseUtils.cleanDecimalString("1000.00")) Assert.assertEquals("1000", BaseUtils.cleanDecimalString("1000.")) @@ -300,7 +486,7 @@ class BaseUtilsTest { } @Test - fun testGetDigitsCountAfterDecimal(){ + fun testGetDigitsCountAfterDecimal() { Assert.assertEquals(1, BaseUtils.getDigitsCountAfterDecimal("1000.0")) Assert.assertEquals(2, BaseUtils.getDigitsCountAfterDecimal("1000.00")) Assert.assertEquals(0, BaseUtils.getDigitsCountAfterDecimal("1000.")) @@ -309,7 +495,7 @@ class BaseUtilsTest { } @Test - fun testPhoneFormat(){ + fun testPhoneFormat() { Assert.assertEquals("66666 12345", BaseUtils.phoneFormat("6666612345")) Assert.assertEquals("66661 2345", BaseUtils.phoneFormat("666612345")) Assert.assertEquals("", BaseUtils.phoneFormat("")) @@ -317,7 +503,7 @@ class BaseUtilsTest { } @Test - fun testMoneyFormat(){ + fun testMoneyFormat() { Assert.assertEquals("10,00,000", BaseUtils.moneyFormat("1000000")) Assert.assertEquals("12,34,56,789", BaseUtils.moneyFormat("123456789")) Assert.assertEquals("12,34,56,789", BaseUtils.moneyFormat("123456789")) @@ -332,5 +518,4 @@ class BaseUtilsTest { fun tearDown() { unmockkAll() } - } diff --git a/navi-base/src/test/java/com/navi/base/utils/ExtTest.kt b/navi-base/src/test/java/com/navi/base/utils/ExtTest.kt index ea70fb479e..3927e7c11d 100644 --- a/navi-base/src/test/java/com/navi/base/utils/ExtTest.kt +++ b/navi-base/src/test/java/com/navi/base/utils/ExtTest.kt @@ -12,7 +12,6 @@ import com.navi.base.model.CtaData import org.junit.Assert import org.junit.Test - class ExtTest { @Test @@ -33,7 +32,6 @@ class ExtTest { Assert.assertEquals(false, str.isNotNullAndNotEmpty()) } - @Test fun testOrFalse_trueValue_returnTrue() { val value = true @@ -313,58 +311,39 @@ class ExtTest { @Test fun testIsSameResponse() { - Assert.assertEquals( - false, - isSameResponse(null, null) - ) + Assert.assertEquals(false, isSameResponse(null, null)) - val cta = CtaData( - url = "HOME" - ) - Assert.assertEquals( - false, - isSameResponse(cta, null) - ) + val cta = CtaData(url = "HOME") + Assert.assertEquals(false, isSameResponse(cta, null)) - Assert.assertEquals( - false, - isSameResponse(null, cta) - ) + Assert.assertEquals(false, isSameResponse(null, cta)) - Assert.assertEquals( - true, - isSameResponse(cta, cta) - ) + Assert.assertEquals(true, isSameResponse(cta, cta)) } @Test fun getAnalyticsEventPropertiesFromCtaData() { - val analyticsEvent = AnalyticsEvent( - name = "home_screen_page_land" - ) - val cta = CtaData( - url = "HOME", - analyticsEventProperties = analyticsEvent - ) + val analyticsEvent = AnalyticsEvent(name = "home_screen_page_land") + val cta = CtaData(url = "HOME", analyticsEventProperties = analyticsEvent) Assert.assertEquals(analyticsEvent, getAnalyticsEventPropertiesFromCtaData(cta)) - val ctaWithEventNull = CtaData( - url = "HOME" - ) + val ctaWithEventNull = CtaData(url = "HOME") Assert.assertEquals(null, getAnalyticsEventPropertiesFromCtaData(ctaWithEventNull)) } -// @Test -// fun testConvertObjectToJson(){ -// val analyticsEvent = AnalyticsEvent( -// name = "home_screen_page_land" -// ) -// val cta = CtaData( -// url = "HOME", -// analyticsEventProperties = analyticsEvent -// ) -// val obj = JSONObject(Gson().toJson(cta)) -// Assert.assertEquals(obj.getJSONObject("url"), convertObjectToJson(cta)?.getJSONObject("url")) -// Assert.assertEquals(obj.getJSONObject("analyticsEventProperties"), convertObjectToJson(cta)?.getJSONObject("analyticsEventProperties")) -// } + // @Test + // fun testConvertObjectToJson(){ + // val analyticsEvent = AnalyticsEvent( + // name = "home_screen_page_land" + // ) + // val cta = CtaData( + // url = "HOME", + // analyticsEventProperties = analyticsEvent + // ) + // val obj = JSONObject(Gson().toJson(cta)) + // Assert.assertEquals(obj.getJSONObject("url"), + // convertObjectToJson(cta)?.getJSONObject("url")) + // Assert.assertEquals(obj.getJSONObject("analyticsEventProperties"), + // convertObjectToJson(cta)?.getJSONObject("analyticsEventProperties")) + // } }