NTP-53780 | Navi link contract changes (#15696)

Co-authored-by: Kishan Kumar <kishan.kumar@navi.com>
This commit is contained in:
Venkat Praneeth Reddy
2025-04-09 18:14:42 +05:30
committed by GitHub
parent 9b285659c4
commit 8317645020
2 changed files with 71 additions and 9 deletions

View File

@@ -92,15 +92,8 @@ private fun handleNaviLink(intent: Intent, processNaviLink: ((String) -> Unit)?)
fun getNaviLinkIdentifier(intent: Intent): String? {
val naviLink = intent.getStringExtra(Constants.NAVILINK_SMALL).orEmpty()
val identifiers =
when {
naviLink.isNotEmpty() -> naviLink.split("/")
else -> emptyList()
}
val naviLinkIdentifier = identifiers.getOrNull(1)
return if (identifiers.firstOrNull() == NAVILINK && !naviLinkIdentifier.isNullOrEmpty()) {
val naviLinkIdentifier = naviLink.substringAfter(delimiter = '/', "")
return if (naviLink.startsWith(NAVILINK) && naviLinkIdentifier.isNotEmpty()) {
naviLinkIdentifier
} else {
null

View File

@@ -0,0 +1,69 @@
/*
*
* * Copyright © 2025 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.naviapp.deeplinkmanagement.usecase
import android.content.Intent
import com.naviapp.utils.Constants
import io.mockk.every
import io.mockk.mockk
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Test
class NativeDeeplinkManagerTest {
@Test
fun `returns identifier when NAVILINK has multiple slashes`() {
val intent = mockk<Intent>()
every { intent.getStringExtra(Constants.NAVILINK_SMALL) } returns "NAVILINK/ABC/XYZ"
val result = getNaviLinkIdentifier(intent)
assertEquals("ABC/XYZ", result)
}
@Test
fun `returns null when NAVILINK does not start with NAVILINK prefix`() {
val intent = mockk<Intent>()
every { intent.getStringExtra(Constants.NAVILINK_SMALL) } returns "NEVILINK/ABC/XYZ"
val result = getNaviLinkIdentifier(intent)
assertNull(result)
}
@Test
fun `returns null when NAVILINK is empty`() {
val intent = mockk<Intent>()
every { intent.getStringExtra(Constants.NAVILINK_SMALL) } returns ""
val result = getNaviLinkIdentifier(intent)
assertNull(result)
}
@Test
fun `returns null when NAVILINK has no path after delimiter`() {
val intent = mockk<Intent>()
every { intent.getStringExtra(Constants.NAVILINK_SMALL) } returns "NAVILINK/"
val result = getNaviLinkIdentifier(intent)
assertNull(result)
}
@Test
fun `returns null when NAVILINK has delimiter`() {
val intent = mockk<Intent>()
every { intent.getStringExtra(Constants.NAVILINK_SMALL) } returns "NAVILINK"
val result = getNaviLinkIdentifier(intent)
assertNull(result)
}
}