Spotless Base (#7589)

This commit is contained in:
Shivam Goyal
2023-08-22 14:18:34 +05:30
committed by GitHub
parent b62c7acd98
commit 160f8d3650
23 changed files with 527 additions and 378 deletions

View File

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

View File

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

View File

@@ -21,6 +21,7 @@ interface DeepLinkListener {
requestCode: Int? = null,
clearTask: Boolean? = false
)
fun fetchBranchSDKData(
activity: Activity,
deeplink: String,

View File

@@ -7,6 +7,4 @@
package com.navi.base.model
data class AppLaunchData(
var properties: MutableMap<String, String>? = null
)
data class AppLaunchData(var properties: MutableMap<String, String>? = null)

View File

@@ -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<String>? = 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,

View File

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

View File

@@ -1,6 +1,6 @@
/*
*
* * Copyright © 2022-2023 by Navi Technologies Limited
* * Copyright © 2023 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/

View File

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

View File

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

View File

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

View File

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

View File

@@ -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<String> {
val generatedKeyList: ArrayList<String> = 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
}
}
}

View File

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

View File

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

View File

@@ -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 {

View File

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

View File

@@ -1,6 +1,6 @@
/*
*
* * Copyright © 2022 by Navi Technologies Limited
* * Copyright © 2022-2023 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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"))
// }
}