From f35d9b67f6362da416c8588a2f3b4818d81eb0bb Mon Sep 17 00:00:00 2001 From: Alisa Seletskaya Date: Thu, 27 Apr 2023 09:38:34 +0300 Subject: [PATCH 1/3] add GenresListTest --- app/build.gradle | 3 +- .../com/example/moviepicker/GenresListTest.kt | 47 +++++++++++++++++++ .../moviepicker/screens/GenresScreen.kt | 29 ++++++++++++ .../example/moviepicker/screens/HomeScreen.kt | 18 +++++++ app/src/main/res/layout/genre_card.xml | 1 + 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 app/src/androidTest/java/com/example/moviepicker/GenresListTest.kt create mode 100644 app/src/androidTest/java/com/example/moviepicker/screens/GenresScreen.kt create mode 100644 app/src/androidTest/java/com/example/moviepicker/screens/HomeScreen.kt diff --git a/app/build.gradle b/app/build.gradle index bc65ed5..8dd4b50 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,5 +51,6 @@ dependencies { implementation 'androidx.navigation:navigation-ui-ktx:2.5.3' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + androidTestImplementation 'com.kaspersky.android-components:kaspresso:1.4.2' + androidTestImplementation 'androidx.test.ext:junit-ktx:1.1.3' } diff --git a/app/src/androidTest/java/com/example/moviepicker/GenresListTest.kt b/app/src/androidTest/java/com/example/moviepicker/GenresListTest.kt new file mode 100644 index 0000000..e5aa1f2 --- /dev/null +++ b/app/src/androidTest/java/com/example/moviepicker/GenresListTest.kt @@ -0,0 +1,47 @@ +package com.example.moviepicker + +import androidx.test.ext.junit.rules.activityScenarioRule +import com.example.moviepicker.screens.GenresScreen +import com.example.moviepicker.screens.HomeScreen +import com.kaspersky.kaspresso.testcases.api.testcase.TestCase +import org.junit.Assert +import org.junit.Rule +import org.junit.Test + +class GenresListTest : TestCase() { + private val genres = listOf( + "Мультфильмы", + "Триллеры", + "Комедии", + "Ужасы" + ) + + @get:Rule + val activityRule = activityScenarioRule() + + @Test + fun checkGenresScreen() = run { + step("Open genres screen") { + HomeScreen { + goToGenres() + } + } + step("Check genres count") { + GenresScreen { + Assert.assertEquals(genres.size, rvGenres.getSize()) + } + } + step("Check genres list") { + GenresScreen { + rvGenres { + for (i in 1 until genres.size) { + childAt(i) { + genreButton.isVisible() + genreButton.hasText(genres[i]) + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/example/moviepicker/screens/GenresScreen.kt b/app/src/androidTest/java/com/example/moviepicker/screens/GenresScreen.kt new file mode 100644 index 0000000..86759a6 --- /dev/null +++ b/app/src/androidTest/java/com/example/moviepicker/screens/GenresScreen.kt @@ -0,0 +1,29 @@ +package com.example.moviepicker.screens + +import android.view.View +import androidx.test.espresso.matcher.ViewMatchers.withId +import com.example.moviepicker.R +import com.kaspersky.kaspresso.screens.KScreen +import io.github.kakaocup.kakao.common.views.KView +import io.github.kakaocup.kakao.recycler.KRecyclerItem +import io.github.kakaocup.kakao.recycler.KRecyclerView +import io.github.kakaocup.kakao.text.KButton +import org.hamcrest.Matcher + +object GenresScreen : KScreen() { + override val layoutId: Int? + get() = R.layout.fragment_genres + override val viewClass: Class<*>? + get() = null + + val rvGenres = KRecyclerView( + builder = { withId(R.id.genresRecyclerView) }, + itemTypeBuilder = { itemType(::GenreScreen) } + ) + + class GenreScreen(matcher: Matcher): KRecyclerItem(matcher) { + val genreContainer = KView(matcher) { withId(R.id.genreContainer) } + val genreButton = KButton(matcher) { withId(R.id.genreButton) } + } + +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/example/moviepicker/screens/HomeScreen.kt b/app/src/androidTest/java/com/example/moviepicker/screens/HomeScreen.kt new file mode 100644 index 0000000..f9f0a4c --- /dev/null +++ b/app/src/androidTest/java/com/example/moviepicker/screens/HomeScreen.kt @@ -0,0 +1,18 @@ +package com.example.moviepicker.screens + +import com.example.moviepicker.R +import com.kaspersky.kaspresso.screens.KScreen +import io.github.kakaocup.kakao.tabs.KTabLayout + +object HomeScreen : KScreen() { + override val layoutId: Int? + get() = R.layout.fragment_home + override val viewClass: Class<*>? + get() = null + + private val tabLayout = KTabLayout { withId(R.id.homeTabLayout) } + + fun goToGenres() { + this.tabLayout.selectTab(1); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/genre_card.xml b/app/src/main/res/layout/genre_card.xml index bcad1ca..9fe224b 100644 --- a/app/src/main/res/layout/genre_card.xml +++ b/app/src/main/res/layout/genre_card.xml @@ -3,6 +3,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/genreContainer" >