diff --git a/app/src/androidTest/kotlin/jp/co/yumemi/android/code_check/AppEndToEnd.kt b/app/src/androidTest/kotlin/jp/co/yumemi/android/code_check/AppEndToEnd.kt index f8654dc..00ae839 100644 --- a/app/src/androidTest/kotlin/jp/co/yumemi/android/code_check/AppEndToEnd.kt +++ b/app/src/androidTest/kotlin/jp/co/yumemi/android/code_check/AppEndToEnd.kt @@ -177,8 +177,6 @@ class AppEndToEnd { val searchBar = composeRule.onNodeWithTag(TestTags.SEARCH_BAR) val recent = composeRule.onNodeWithTag(TestTags.RECENT_SEARCHED) recent.assertExists() - val searchedResult = composeRule.onNodeWithTag("${TestTags.SEARCH_RECENT_RESULT_PREFIX}_$query") - searchedResult.assertDoesNotExist() val searchedReflect = composeRule.onNodeWithTag("${TestTags.REFLECT_SEARCH_BAR_PREFIX}_$query") searchedReflect.assertDoesNotExist() @@ -193,7 +191,10 @@ class AppEndToEnd { recent.assertExists() // 直近の検索結果に、履歴が表示されていること searchedReflect.assertExists() - searchedResult.assertTextEquals(query) + composeRule.onNodeWithTag( + testTag = "${TestTags.SEARCH_RECENT_RESULT_PREFIX}_$query", + useUnmergedTree = true, + ).assertTextEquals(query) } @Test @@ -233,6 +234,35 @@ class AppEndToEnd { searchBar.assertTextEquals(query) } + @Test + fun `show_recent_searched_name_work_correctly`() { + // Arrange + val query = "show_recent_reflect_correctly_query" + val searchBar = composeRule.onNodeWithTag(TestTags.SEARCH_BAR) + val searchResult = composeRule.onNodeWithTag(TestTags.SEARCH_RESULT) + val searchedRow = composeRule.onNodeWithTag("${TestTags.RECENT_SEARCH_STR_ROW_PREFIX}_$query") + // 検索履歴用意 + searchBar.performTextInput(query) + searchBar.performImeAction() + MockGitHubRepositoryImpl.initMock() + // 検索文字列削除 + composeRule.onNodeWithTag(TestTags.CANCEL_BUTTON).performClick() + + // Act + // 対象の行を押す + searchedRow.performClick() + + // Assert + // 検索バーに、期待値通り文言が表示されていること + searchBar.assertTextEquals(query) + // API のレスポンスにより、リストが更新されていること + searchResult.onChildren().assertCountEquals(2) + + // API が呼び出されていること + assertEquals(1, MockGitHubRepositoryImpl.counter) + assertEquals(query, MockGitHubRepositoryImpl.passedQuery) + } + @Test fun `tap_a_repository_navigate_to_detail_screen`() { // Arrange diff --git a/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/main/MainView.kt b/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/main/MainView.kt index 5aa45c1..0de62a6 100644 --- a/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/main/MainView.kt +++ b/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/main/MainView.kt @@ -64,13 +64,25 @@ fun MainView( viewModel.setShowRecent(false) }, onItemClick = { + // 検索バーに表示 viewModel.setSearchInput( TextFieldValue( text = it, selection = TextRange(it.length), ) ) + // 検索まで行う + viewModel.searchResults(it) }, + onItemReflectClick = { + // 検索バーに表示するだけ + viewModel.setSearchInput( + TextFieldValue( + text = it, + selection = TextRange(it.length), + ) + ) + } ) } diff --git a/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/main/component/RecentSearched.kt b/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/main/component/RecentSearched.kt index fc64cac..016488b 100644 --- a/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/main/component/RecentSearched.kt +++ b/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/main/component/RecentSearched.kt @@ -34,6 +34,7 @@ fun RecentSearched( searched: List, onCloseClick: () -> Unit = {}, onItemClick: (String) -> Unit = {}, + onItemReflectClick: (String) -> Unit = {}, ) { val iconColor = Color.Gray.copy(alpha = 0.4f) @@ -67,7 +68,7 @@ fun RecentSearched( onCloseClick() } .testTag(TestTags.RECENT_SEARCHED_CLOSE), - contentDescription = "close recent", + contentDescription = "close recent", tint = Color.White, ) } @@ -75,7 +76,12 @@ fun RecentSearched( items(searched) { str -> Row( - modifier = Modifier.padding(vertical = 8.dp, horizontal = 16.dp), + modifier = Modifier + .clickable { + onItemClick(str) + } + .padding(vertical = 8.dp, horizontal = 16.dp) + .testTag("${TestTags.RECENT_SEARCH_STR_ROW_PREFIX}_$str"), verticalAlignment = Alignment.CenterVertically ) { Text( @@ -96,7 +102,7 @@ fun RecentSearched( .rotate(45f) .clickable( onClick = { - onItemClick(str) + onItemReflectClick(str) }, indication = rememberRipple(bounded = false), interactionSource = remember { MutableInteractionSource() } diff --git a/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/util/TestTags.kt b/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/util/TestTags.kt index 4496e52..1d1a8d7 100644 --- a/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/util/TestTags.kt +++ b/app/src/main/kotlin/jp/co/yumemi/android/code_check/presentation/util/TestTags.kt @@ -9,6 +9,7 @@ object TestTags { const val RECENT_SEARCHED = "RECENT_SEARCHED" const val RECENT_SEARCHED_CLOSE = "RECENT_SEARCHED_CLOSE" const val SEARCH_RECENT_RESULT_PREFIX = "SEARCH_RECENT_RESULT_PREFIX" + const val RECENT_SEARCH_STR_ROW_PREFIX = "RECENT_SEARCH_STR_ROW_PREFIX" const val REFLECT_SEARCH_BAR_PREFIX = "REFLECT_SEARCH_BAR_PREFIX" // In DetailView