feat: route board and card taps to detail screens

This commit is contained in:
2026-03-16 01:33:48 -04:00
parent 5f5a273d7f
commit f5ac01de09
8 changed files with 129 additions and 35 deletions

View File

@@ -11,6 +11,9 @@ import androidx.test.espresso.action.ViewActions.click
import androidx.test.espresso.action.ViewActions.longClick
import androidx.test.espresso.action.ViewActions.replaceText
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.intent.Intents
import androidx.test.espresso.intent.matcher.IntentMatchers.hasComponent
import androidx.test.espresso.intent.matcher.IntentMatchers.hasExtra
import androidx.test.espresso.matcher.RootMatchers.isDialog
import androidx.test.espresso.matcher.ViewMatchers.withContentDescription
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
@@ -53,12 +56,14 @@ class BoardDetailFlowTest {
@Before
fun setUp() {
originalLocale = Locale.getDefault()
Intents.init()
defaultDataSource = FakeBoardDetailDataSource(initialDetail = detailOneList())
BoardDetailActivity.testDataSourceFactory = { defaultDataSource }
}
@After
fun tearDown() {
Intents.release()
BoardDetailActivity.testDataSourceFactory = null
originalLocale?.let { Locale.setDefault(it) }
}
@@ -245,6 +250,29 @@ class BoardDetailFlowTest {
}
}
@Test
fun cardTapNavigatesToCardPlaceholderWithExtras() {
launchBoardDetail()
onView(withText("Card 1")).perform(click())
Intents.intended(hasComponent(CardDetailPlaceholderActivity::class.java.name))
Intents.intended(hasExtra(CardDetailPlaceholderActivity.EXTRA_CARD_ID, "card-1"))
Intents.intended(hasExtra(CardDetailPlaceholderActivity.EXTRA_CARD_TITLE, "Card 1"))
}
@Test
fun cardTapBlankTitle_usesCardFallbackInPlaceholderExtra() {
defaultDataSource.currentDetail = detailWithCardTitle(" ")
launchBoardDetail()
onView(withId(R.id.cardItemRoot)).perform(click())
Intents.intended(hasComponent(CardDetailPlaceholderActivity::class.java.name))
Intents.intended(hasExtra(CardDetailPlaceholderActivity.EXTRA_CARD_ID, "card-1"))
Intents.intended(hasExtra(CardDetailPlaceholderActivity.EXTRA_CARD_TITLE, "Card"))
}
private fun launchBoardDetail(): ActivityScenario<BoardDetailActivity> {
val intent = Intent(
androidx.test.core.app.ApplicationProvider.getApplicationContext(),
@@ -353,5 +381,24 @@ class BoardDetailFlowTest {
),
)
}
fun detailWithCardTitle(title: String): BoardDetail {
return detailOneList().copy(
lists = listOf(
BoardListDetail(
id = "list-1",
title = "To Do",
cards = listOf(
BoardCardSummary(
id = "card-1",
title = title,
tags = emptyList(),
dueAtEpochMillis = null,
),
),
),
),
)
}
}
}

View File

@@ -46,7 +46,7 @@ class BoardsFlowTest {
}
@Test
fun boardTapNavigatesToDetailPlaceholderWithExtras() {
fun boardTapNavigatesToBoardDetailActivity() {
MainActivity.dependencies.apiClientFactory = {
FakeBoardsApiClient(
boards = mutableListOf(BoardSummary("1", "Alpha")),
@@ -58,9 +58,9 @@ class BoardsFlowTest {
onView(withText("Alpha")).perform(click())
Intents.intended(hasComponent(BoardDetailPlaceholderActivity::class.java.name))
Intents.intended(hasExtra(BoardDetailPlaceholderActivity.EXTRA_BOARD_ID, "1"))
Intents.intended(hasExtra(BoardDetailPlaceholderActivity.EXTRA_BOARD_TITLE, "Alpha"))
Intents.intended(hasComponent(space.hackenslacker.kanbn4droid.app.boarddetail.BoardDetailActivity::class.java.name))
Intents.intended(hasExtra(space.hackenslacker.kanbn4droid.app.boarddetail.BoardDetailActivity.EXTRA_BOARD_ID, "1"))
Intents.intended(hasExtra(space.hackenslacker.kanbn4droid.app.boarddetail.BoardDetailActivity.EXTRA_BOARD_TITLE, "Alpha"))
}
@Test
@@ -79,8 +79,8 @@ class BoardsFlowTest {
onView(withId(R.id.useTemplateChip)).perform(click())
onView(withId(android.R.id.button1)).inRoot(isDialog()).perform(click())
Intents.intended(hasComponent(BoardDetailPlaceholderActivity::class.java.name))
Intents.intended(hasExtra(BoardDetailPlaceholderActivity.EXTRA_BOARD_TITLE, "Roadmap"))
Intents.intended(hasComponent(space.hackenslacker.kanbn4droid.app.boarddetail.BoardDetailActivity::class.java.name))
Intents.intended(hasExtra(space.hackenslacker.kanbn4droid.app.boarddetail.BoardDetailActivity.EXTRA_BOARD_TITLE, "Roadmap"))
}
@Test