@@ -12,6 +12,52 @@ import org.junit.Test
1212@kotlin.ExperimentalUnsignedTypes
1313class BaseDeepLinkDelegateTest {
1414
15+ @Test
16+ fun testFindMethodDeepLinkWrongMethod () {
17+ val uriTemplate = " airbnb://foo/{bar}"
18+ val uriString = " airbnb://foo/1"
19+ val uri = mockk<Uri >()
20+ every { uri.toString() } returns uriString
21+ val entry = methodDeepLinkEntry(
22+ uriTemplate,
23+ TestDeepLinkClassStatic ::class .java.name,
24+ " wrongMethod"
25+ )
26+ val activityMock = mockk<Activity >()
27+ val testDelegate = getOneRegistryTestDelegate(listOf (entry), null )
28+ val intent = mockk<Intent >(relaxed = true )
29+ every { intent.data } returns uri
30+ every { activityMock.intent } returns intent
31+ val result =
32+ testDelegate.createResult(activityMock, intent, testDelegate.findEntry(uriTemplate))
33+ assertThat(result.isSuccessful).isFalse
34+ assertThat(result.uriString).isEqualTo(uriString)
35+ assertThat(result.error).isEqualTo(" Deep link to non-existent method: wrongMethod" )
36+ assertThat(result.errorThrowable).isInstanceOf(BaseDeepLinkDelegate .DeeplLinkMethodError ::class .java)
37+ assertThat(result.errorThrowable?.cause).isInstanceOf(NoSuchMethodException ::class .java)
38+ }
39+
40+ @Test
41+ fun testFindMethodDeepLinkethod () {
42+ val uriTemplate = " airbnb://foo/{bar}"
43+ val uriString = " airbnb://foo/1"
44+ val uri = mockk<Uri >()
45+ every { uri.toString() } returns uriString
46+ val entry =
47+ methodDeepLinkEntry(uriTemplate, TestDeepLinkClassStatic ::class .java.name, " testMethod" )
48+ val activityMock = mockk<Activity >(relaxed = true )
49+ val testDelegate = getOneRegistryTestDelegate(listOf (entry), null )
50+ val intent = mockk<Intent >(relaxed = true )
51+ every { intent.data } returns uri
52+ every { activityMock.intent } returns intent
53+ val result =
54+ testDelegate.createResult(activityMock, intent, testDelegate.findEntry(uriTemplate))
55+ assertThat(result.isSuccessful).isTrue
56+ assertThat(result.uriString).isEqualTo(uriString)
57+ assertThat(result.error).isEqualTo(" " )
58+ assertThat(result.errorThrowable).isNull()
59+ }
60+
1561 @Test
1662 fun testFindEntry () {
1763 val entry = activityDeepLinkEntry(" airbnb://foo/{bar}" )
@@ -102,11 +148,8 @@ class BaseDeepLinkDelegateTest {
102148 val result = testDelegate.createResult(activity, intent, null )
103149 assertThat(result).isEqualTo(
104150 DeepLinkResult (
105- false , null , " No Uri in given activity's intent." , null ,
106- DeepLinkMethodResult (
107- null ,
108- null
109- ),
151+ isSuccessful = false ,
152+ error = " No Uri in given activity's intent." ,
110153 deepLinkHandlerResult = null
111154 )
112155 )
@@ -128,7 +171,7 @@ class BaseDeepLinkDelegateTest {
128171 every { activity.applicationContext } returns appContext
129172 val errorHandler = DuplicatedMatchTestErrorHandler ()
130173 val testDelegate = getTwoRegistriesTestDelegate(listOf (entry), listOf (entry), errorHandler)
131- val (_, _, _, match) = testDelegate.dispatchFrom(activity, intent)
174+ val (_, _, _, _, match) = testDelegate.dispatchFrom(activity, intent)
132175 assertThat(errorHandler.duplicateMatchCalled).isTrue
133176 assertThat(errorHandler.duplicatedMatches).isNotNull
134177 assertThat(errorHandler.duplicatedMatches!! .size).isEqualTo(2 )
@@ -155,7 +198,7 @@ class BaseDeepLinkDelegateTest {
155198 every { activity.applicationContext } returns appContext
156199 val errorHandler = DuplicatedMatchTestErrorHandler ()
157200 val testDelegate = getTwoRegistriesTestDelegate(listOf (entry1), listOf (entry2), errorHandler)
158- val (_, _, _, deepLinkEntry) = testDelegate.dispatchFrom(activity, intent)
201+ val (_, _, _, _, deepLinkEntry) = testDelegate.dispatchFrom(activity, intent)
159202 assertThat(errorHandler.duplicateMatchCalled).isFalse
160203 assertThat(deepLinkEntry!! .equals(entry2))
161204 }
@@ -184,6 +227,22 @@ class BaseDeepLinkDelegateTest {
184227 return DeepLinkEntry .ActivityDeeplinkEntry (uri, className)
185228 }
186229
230+ private fun methodDeepLinkEntry (
231+ uri : String ,
232+ className : String ,
233+ methodName : String
234+ ): DeepLinkEntry .MethodDeeplinkEntry {
235+ return DeepLinkEntry .MethodDeeplinkEntry (uri, className, methodName)
236+ }
237+
238+ private fun handlerDeepLinkEntry (
239+ uri : String ,
240+ className : String ,
241+ methodName : String
242+ ): DeepLinkEntry .MethodDeeplinkEntry {
243+ return DeepLinkEntry .MethodDeeplinkEntry (uri, className, methodName)
244+ }
245+
187246 private fun getTwoRegistriesTestDelegate (entriesFirstRegistry : List <DeepLinkEntry >, entriesSecondRegistry : List <DeepLinkEntry >, errorHandler : ErrorHandler ): TestDeepLinkDelegate {
188247 return TestDeepLinkDelegate (listOf (testRegistry(entriesFirstRegistry), testRegistry(entriesSecondRegistry)), errorHandler)
189248 }
@@ -193,3 +252,11 @@ class BaseDeepLinkDelegateTest {
193252 }
194253 }
195254}
255+
256+ object TestDeepLinkClassStatic {
257+ @DeepLink(" airbnb://foo/{bar}" )
258+ @JvmStatic
259+ fun testMethod (context : Context ): Intent {
260+ return Intent ()
261+ }
262+ }
0 commit comments