Skip to content

Commit a3ce765

Browse files
committed
Tests
1 parent e9001ce commit a3ce765

File tree

2 files changed

+98
-5
lines changed

2 files changed

+98
-5
lines changed

app/src/test/java/com/kickstarter/services/UriExtTest.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.kickstarter.libs.utils.extensions.isDiscoverCategoriesPath
99
import com.kickstarter.libs.utils.extensions.isDiscoverPlacesPath
1010
import com.kickstarter.libs.utils.extensions.isDiscoverScopePath
1111
import com.kickstarter.libs.utils.extensions.isDiscoverSortParam
12+
import com.kickstarter.libs.utils.extensions.isDiscoverUri
1213
import com.kickstarter.libs.utils.extensions.isEmailDomain
1314
import com.kickstarter.libs.utils.extensions.isKSFavIcon
1415
import com.kickstarter.libs.utils.extensions.isKickstarterUri
@@ -118,6 +119,23 @@ class UriExtTest : KSRobolectricTestCase() {
118119
assertFalse(uri.isKickstarterUri(webEndpoint))
119120
}
120121

122+
@Test
123+
fun testUri_isDiscoverUri() {
124+
val discoverBaseUri1 = Uri.parse("https://www.ksr.com/discover")
125+
val discoverBaseUri2 = Uri.parse("https://www.ksr.com/discover/")
126+
val discoverScopeUri = Uri.parse("https://www.ksr.com/discover/ending-soon")
127+
val discoverSortUri = Uri.parse("https://www.ksr.com/discover/advanced?sort=ending-soon")
128+
val discoverMalformedUri = Uri.parse("https://www.ksr.com/discovery/advanced?sort=popularity")
129+
assertTrue(discoverBaseUri1.isDiscoverUri(webEndpoint))
130+
assertTrue(discoverBaseUri2.isDiscoverUri(webEndpoint))
131+
assertTrue(discoverScopeUri.isDiscoverUri(webEndpoint))
132+
assertTrue(discoverSortUri.isDiscoverUri(webEndpoint))
133+
assertTrue(discoverCategoriesUri.isDiscoverUri(webEndpoint))
134+
assertTrue(discoverPlacesUri.isDiscoverUri(webEndpoint))
135+
assertFalse(discoverMalformedUri.isDiscoverUri(webEndpoint))
136+
assertFalse(projectUri.isDiscoverUri(webEndpoint))
137+
}
138+
121139
@Test
122140
fun testUri_isWebViewUri() {
123141
val ksrUri = Uri.parse("https://www.ksr.com/project")

app/src/test/java/com/kickstarter/viewmodels/DeepLinkViewModelTest.kt

Lines changed: 80 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,12 @@ import org.junit.Assert.assertThrows
3838
import org.junit.Test
3939
import org.mockito.Mockito.mock
4040
import org.mockito.Mockito.`when`
41+
import java.util.Optional
4142

4243
class DeepLinkViewModelTest : KSRobolectricTestCase() {
4344
lateinit var vm: SplashScreenViewModel.DeepLinkViewModel
4445
private val startBrowser = TestSubscriber<String>()
45-
private val startDiscoveryActivity = TestSubscriber<Unit>()
46+
private val startDiscoveryActivity = TestSubscriber<Optional<Uri>>()
4647
private val startProjectActivity = TestSubscriber<Uri>()
4748
private val startProjectActivityForCheckout = TestSubscriber<Uri>()
4849
private val startProjectActivityForComment = TestSubscriber<Uri>()
@@ -137,7 +138,7 @@ class DeepLinkViewModelTest : KSRobolectricTestCase() {
137138
)
138139

139140
startBrowser.assertNoValues()
140-
startDiscoveryActivity.assertValue(Unit)
141+
startDiscoveryActivity.assertValue { it.isEmpty }
141142
startProjectActivity.assertNoValues()
142143
startProjectActivityForCheckout.assertNoValues()
143144
startProjectActivityForComment.assertNoValues()
@@ -179,7 +180,7 @@ class DeepLinkViewModelTest : KSRobolectricTestCase() {
179180
)
180181

181182
startBrowser.assertNoValues()
182-
startDiscoveryActivity.assertValue(Unit)
183+
startDiscoveryActivity.assertValue { it.isEmpty }
183184
startProjectActivity.assertNoValues()
184185
startProjectActivityForCheckout.assertNoValues()
185186
startProjectActivityForComment.assertNoValues()
@@ -215,7 +216,7 @@ class DeepLinkViewModelTest : KSRobolectricTestCase() {
215216
)
216217

217218
startBrowser.assertNoValues()
218-
startDiscoveryActivity.assertValue(Unit)
219+
startDiscoveryActivity.assertValue { it.isEmpty }
219220
startProjectActivity.assertNoValues()
220221
startProjectActivityForCheckout.assertNoValues()
221222
startProjectActivityForComment.assertNoValues()
@@ -292,7 +293,7 @@ class DeepLinkViewModelTest : KSRobolectricTestCase() {
292293
vm.runInitializations()
293294

294295
startBrowser.assertNoValues()
295-
startDiscoveryActivity.assertValue(Unit)
296+
startDiscoveryActivity.assertValue { it.isEmpty }
296297
startProjectActivity.assertNoValues()
297298
startProjectActivityForCheckout.assertNoValues()
298299
startProjectActivityForComment.assertNoValues()
@@ -302,6 +303,77 @@ class DeepLinkViewModelTest : KSRobolectricTestCase() {
302303
startPMOrderEditWebview.assertNoValues()
303304
}
304305

306+
@Test
307+
fun testBaseDiscoverDeeplink_OpensDiscovery() = runTest {
308+
val url = "https://www.kickstarter.com/discover"
309+
310+
var environment = environment().toBuilder().featureFlagClient(MockFeatureFlagClient()).build()
311+
setUpEnvironment(intent = intentWithData(url), environment = environment)
312+
313+
vm.runInitializations()
314+
315+
startBrowser.assertNoValues()
316+
startDiscoveryActivity.assertValue { it.isPresent && it.get() == Uri.parse(url) }
317+
startProjectActivity.assertNoValues()
318+
startProjectActivityForCheckout.assertNoValues()
319+
startProjectActivityForComment.assertNoValues()
320+
startProjectActivityForUpdate.assertNoValues()
321+
startProjectActivityForCommentToUpdate.assertNoValues()
322+
startProjectActivityToSave.assertNoValues()
323+
startPreLaunchProjectActivity.assertNoValues()
324+
finishDeeplinkActivity.assertNoValues()
325+
startProjectSurveyActivity.assertNoValues()
326+
startPMOrderEditWebview.assertNoValues()
327+
}
328+
329+
@Test
330+
fun testDiscoverDeeplink_OpensDiscovery() = runTest {
331+
// This can be any URL whose path begins with `/discover/`
332+
val url =
333+
"https://www.kickstarter.com/discover/advanced?sort=newest&staff_picks=1&raised=1"
334+
335+
var environment = environment().toBuilder().featureFlagClient(MockFeatureFlagClient()).build()
336+
setUpEnvironment(intent = intentWithData(url), environment = environment)
337+
338+
vm.runInitializations()
339+
340+
startBrowser.assertNoValues()
341+
startDiscoveryActivity.assertValue { it.isPresent && it.get() == Uri.parse(url) }
342+
startProjectActivity.assertNoValues()
343+
startProjectActivityForCheckout.assertNoValues()
344+
startProjectActivityForComment.assertNoValues()
345+
startProjectActivityForUpdate.assertNoValues()
346+
startProjectActivityForCommentToUpdate.assertNoValues()
347+
startProjectActivityToSave.assertNoValues()
348+
startPreLaunchProjectActivity.assertNoValues()
349+
finishDeeplinkActivity.assertNoValues()
350+
startProjectSurveyActivity.assertNoValues()
351+
startPMOrderEditWebview.assertNoValues()
352+
}
353+
354+
@Test
355+
fun testMalformedDiscoverDeeplink_OpensBrowser() = runTest {
356+
val url = "https://www.kickstarter.com/discovery/categories/games"
357+
358+
var environment = environment().toBuilder().featureFlagClient(MockFeatureFlagClient()).build()
359+
setUpEnvironment(intent = intentWithData(url), environment = environment)
360+
361+
vm.runInitializations()
362+
363+
startBrowser.assertValue(url)
364+
startDiscoveryActivity.assertNoValues()
365+
startProjectActivity.assertNoValues()
366+
startProjectActivityForCheckout.assertNoValues()
367+
startProjectActivityForComment.assertNoValues()
368+
startProjectActivityForUpdate.assertNoValues()
369+
startProjectActivityForCommentToUpdate.assertNoValues()
370+
startProjectActivityToSave.assertNoValues()
371+
startPreLaunchProjectActivity.assertNoValues()
372+
finishDeeplinkActivity.assertNoValues()
373+
startProjectSurveyActivity.assertNoValues()
374+
startPMOrderEditWebview.assertNoValues()
375+
}
376+
305377
@Test
306378
fun testProjectPreviewLink_startsBrowser() {
307379
val url =
@@ -658,6 +730,9 @@ class DeepLinkViewModelTest : KSRobolectricTestCase() {
658730
}
659731

660732
@Test
733+
/* 2025-12-08 Not changing this test, but noting that this corresponds to the
734+
* `lastPathSegmentIsProjects()` method in the VM. Since this now overlaps with support for
735+
* other Discover deep links, we can target this case more precisely. */
661736
fun testDiscoveryDeepLink_startsDiscoveryActivity() {
662737
val url = "https://www.kickstarter.com/projects"
663738
var environment = environment().toBuilder().featureFlagClient(MockFeatureFlagClient()).build()

0 commit comments

Comments
 (0)