Issue#4 Add scrolling to recyclerview so elements can be verified safely
This commit is contained in:
parent
fa1fc49d0b
commit
fc32f1c7cd
7 changed files with 58 additions and 36 deletions
|
|
@ -137,6 +137,7 @@ dependencies {
|
|||
testImplementation "androidx.test.ext:junit:$testing_androidx_junit_version"
|
||||
testImplementation "androidx.test.espresso:espresso-core:$testing_espresso_version"
|
||||
testImplementation "androidx.test.espresso:espresso-intents:$testing_espresso_version"
|
||||
testImplementation "androidx.test.espresso:espresso-contrib:$testing_espresso_version"
|
||||
testImplementation project(':mockserver')
|
||||
testImplementation "androidx.arch.core:core-testing:$testing_androidx_arch_core_version"
|
||||
testRuntimeOnly "org.junit.vintage:junit-vintage-engine:$testing_junit5_version"
|
||||
|
|
@ -151,6 +152,7 @@ dependencies {
|
|||
androidTestImplementation "androidx.test.ext:junit:$testing_androidx_junit_version"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-core:$testing_espresso_version"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-intents:$testing_espresso_version"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-contrib:$testing_espresso_version"
|
||||
androidTestImplementation project(':mockserver')
|
||||
androidTestImplementation "androidx.arch.core:core-testing:$testing_androidx_arch_core_version"
|
||||
androidTestRuntimeOnly "org.junit.vintage:junit-vintage-engine:$testing_junit5_version"
|
||||
|
|
@ -161,10 +163,3 @@ dependencies {
|
|||
implementation "io.reactivex.rxjava3:rxjava:3.1.2"
|
||||
}
|
||||
|
||||
|
||||
///Users/gergelyhegedus/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.5.31/ff5d99aecd328872494e8921b72bf6e3af97af3e/kotlin-stdlib-jdk8-1.5.31.jar (version 1.5)
|
||||
///Users/gergelyhegedus/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.5.31/77e0f2568912e45d26c31fd417a332458508acdf/kotlin-stdlib-jdk7-1.5.31.jar (version 1.5)
|
||||
///Users/gergelyhegedus/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.6.0/a40b8b22529b733892edf4b73468ce598bb17f04/kotlin-stdlib-1.6.0.jar (version 1.6)
|
||||
///Users/gergelyhegedus/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.0/7857e365f925cfa060f941c1357cda1f8790502c/kotlin-stdlib-common-1.6.0.jar (version 1.6)
|
||||
//w: Some runtime JAR files in the classpath have an incompatible version. Consider removing them from the classpath
|
||||
//dagger.lint.DaggerIssueRegistry in /Users/gergelyhegedus/.gradle/caches/transforms-3/7d8d9a87fed97b25e3e147795231ede4/transformed/jetified-dagger-lint-aar-2.40/jars/lint.jar does not specify a vendor; see IssueRegistry#vendor
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package org.fnives.test.showcase.ui.home
|
||||
|
||||
import android.app.Instrumentation
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.test.espresso.Espresso
|
||||
import androidx.test.espresso.action.ViewActions.click
|
||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||
import androidx.test.espresso.contrib.RecyclerViewActions
|
||||
import androidx.test.espresso.intent.Intents
|
||||
import androidx.test.espresso.intent.matcher.IntentMatchers
|
||||
import androidx.test.espresso.matcher.ViewMatchers
|
||||
|
|
@ -48,12 +50,15 @@ class HomeRobot : Robot {
|
|||
Espresso.onView(withId(R.id.logout_cta)).perform(click())
|
||||
}
|
||||
|
||||
fun assertContainsItem(item: FavouriteContent) = apply {
|
||||
fun assertContainsItem(index: Int, item: FavouriteContent) = apply {
|
||||
val isFavouriteResourceId = if (item.isFavourite) {
|
||||
R.drawable.favorite_24
|
||||
} else {
|
||||
R.drawable.favorite_border_24
|
||||
}
|
||||
Espresso.onView(withId(R.id.recycler))
|
||||
.perform(RecyclerViewActions.scrollToPosition<RecyclerView.ViewHolder>(index))
|
||||
|
||||
Espresso.onView(
|
||||
allOf(
|
||||
withChild(allOf(withText(item.content.title), withId(R.id.title))),
|
||||
|
|
@ -64,7 +69,10 @@ class HomeRobot : Robot {
|
|||
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))
|
||||
}
|
||||
|
||||
fun clickOnContentItem(item: Content) = apply {
|
||||
fun clickOnContentItem(index: Int, item: Content) = apply {
|
||||
Espresso.onView(withId(R.id.recycler))
|
||||
.perform(RecyclerViewActions.scrollToPosition<RecyclerView.ViewHolder>(index))
|
||||
|
||||
Espresso.onView(
|
||||
allOf(
|
||||
withId(R.id.favourite_cta),
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@ class MainActivityTest {
|
|||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
ContentData.contentSuccess.forEach {
|
||||
homeRobot.assertContainsItem(FavouriteContent(it, false))
|
||||
ContentData.contentSuccess.forEachIndexed { index, content ->
|
||||
homeRobot.assertContainsItem(index, FavouriteContent(content, false))
|
||||
}
|
||||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
|
@ -119,11 +119,11 @@ class MainActivityTest {
|
|||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
homeRobot.clickOnContentItem(ContentData.contentSuccess.first())
|
||||
homeRobot.clickOnContentItem(0, ContentData.contentSuccess.first())
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
|
||||
val expectedItem = FavouriteContent(ContentData.contentSuccess.first(), true)
|
||||
homeRobot.assertContainsItem(expectedItem)
|
||||
homeRobot.assertContainsItem(0, expectedItem)
|
||||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
|
|
@ -135,7 +135,7 @@ class MainActivityTest {
|
|||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
homeRobot.clickOnContentItem(ContentData.contentSuccess.first())
|
||||
homeRobot.clickOnContentItem(0, ContentData.contentSuccess.first())
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
|
||||
val expectedItem = FavouriteContent(ContentData.contentSuccess.first(), true)
|
||||
|
|
@ -144,7 +144,7 @@ class MainActivityTest {
|
|||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
|
||||
homeRobot.assertContainsItem(expectedItem)
|
||||
homeRobot.assertContainsItem(0, expectedItem)
|
||||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
|
|
@ -156,13 +156,13 @@ class MainActivityTest {
|
|||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
homeRobot.clickOnContentItem(ContentData.contentSuccess.first())
|
||||
homeRobot.clickOnContentItem(0, ContentData.contentSuccess.first())
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
homeRobot.clickOnContentItem(ContentData.contentSuccess.first())
|
||||
homeRobot.clickOnContentItem(0, ContentData.contentSuccess.first())
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
|
||||
val expectedItem = FavouriteContent(ContentData.contentSuccess.first(), false)
|
||||
homeRobot.assertContainsItem(expectedItem)
|
||||
homeRobot.assertContainsItem(0, expectedItem)
|
||||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
|
|
@ -194,8 +194,8 @@ class MainActivityTest {
|
|||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
loopMainThreadFor(2000L)
|
||||
|
||||
ContentData.contentSuccess.forEach {
|
||||
homeRobot.assertContainsItem(FavouriteContent(it, false))
|
||||
ContentData.contentSuccess.forEachIndexed { index, content ->
|
||||
homeRobot.assertContainsItem(index, FavouriteContent(content, false))
|
||||
}
|
||||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
|
@ -236,8 +236,8 @@ class MainActivityTest {
|
|||
activityScenario = ActivityScenario.launch(HiltMainActivity::class.java)
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
|
||||
ContentData.contentSuccess.forEach {
|
||||
homeRobot.assertContainsItem(FavouriteContent(it, false))
|
||||
ContentData.contentSuccess.forEachIndexed { index, content ->
|
||||
homeRobot.assertContainsItem(index, FavouriteContent(content, false))
|
||||
}
|
||||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,8 +97,8 @@ class MainActivityTest : KoinTest {
|
|||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
ContentData.contentSuccess.forEach {
|
||||
homeRobot.assertContainsItem(FavouriteContent(it, false))
|
||||
ContentData.contentSuccess.forEachIndexed { index, content ->
|
||||
homeRobot.assertContainsItem(index, FavouriteContent(content, false))
|
||||
}
|
||||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
|
@ -111,11 +111,11 @@ class MainActivityTest : KoinTest {
|
|||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
homeRobot.clickOnContentItem(ContentData.contentSuccess.first())
|
||||
homeRobot.clickOnContentItem(0, ContentData.contentSuccess.first())
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
|
||||
val expectedItem = FavouriteContent(ContentData.contentSuccess.first(), true)
|
||||
homeRobot.assertContainsItem(expectedItem)
|
||||
homeRobot.assertContainsItem(0, expectedItem)
|
||||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
|
|
@ -127,7 +127,7 @@ class MainActivityTest : KoinTest {
|
|||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
homeRobot.clickOnContentItem(ContentData.contentSuccess.first())
|
||||
homeRobot.clickOnContentItem(0, ContentData.contentSuccess.first())
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
|
||||
val expectedItem = FavouriteContent(ContentData.contentSuccess.first(), true)
|
||||
|
|
@ -136,7 +136,7 @@ class MainActivityTest : KoinTest {
|
|||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
|
||||
homeRobot.assertContainsItem(expectedItem)
|
||||
homeRobot.assertContainsItem(0, expectedItem)
|
||||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
|
|
@ -148,13 +148,13 @@ class MainActivityTest : KoinTest {
|
|||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
homeRobot.clickOnContentItem(ContentData.contentSuccess.first())
|
||||
homeRobot.clickOnContentItem(0, ContentData.contentSuccess.first())
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
homeRobot.clickOnContentItem(ContentData.contentSuccess.first())
|
||||
homeRobot.clickOnContentItem(0, ContentData.contentSuccess.first())
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
|
||||
val expectedItem = FavouriteContent(ContentData.contentSuccess.first(), false)
|
||||
homeRobot.assertContainsItem(expectedItem)
|
||||
homeRobot.assertContainsItem(0, expectedItem)
|
||||
.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
||||
|
|
@ -186,8 +186,8 @@ class MainActivityTest : KoinTest {
|
|||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
loopMainThreadFor(2000L)
|
||||
|
||||
ContentData.contentSuccess.forEach {
|
||||
homeRobot.assertContainsItem(FavouriteContent(it, false))
|
||||
ContentData.contentSuccess.forEachIndexed { index, content ->
|
||||
homeRobot.assertContainsItem(index, FavouriteContent(content, false))
|
||||
}
|
||||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
|
@ -228,8 +228,8 @@ class MainActivityTest : KoinTest {
|
|||
activityScenario = ActivityScenario.launch(MainActivity::class.java)
|
||||
mainDispatcherTestRule.advanceUntilIdleWithIdlingResources()
|
||||
|
||||
ContentData.contentSuccess.forEach {
|
||||
homeRobot.assertContainsItem(FavouriteContent(it, false))
|
||||
ContentData.contentSuccess.forEachIndexed { index, content ->
|
||||
homeRobot.assertContainsItem(index, FavouriteContent(content, false))
|
||||
}
|
||||
homeRobot.assertDidNotNavigateToAuth()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue