mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-14 01:48:47 -04:00
Added test cases for testing all the saved bookmarks should show on the bookmarks screen.
This commit is contained in:
parent
17e630c40b
commit
b0c5db4ad3
@ -18,10 +18,14 @@
|
||||
|
||||
package org.kiwix.kiwixmobile.page.bookmarks
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.action.ViewActions.click
|
||||
import androidx.test.espresso.action.ViewActions.longClick
|
||||
import androidx.test.espresso.assertion.ViewAssertions
|
||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||
import androidx.test.espresso.contrib.RecyclerViewActions
|
||||
import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||
import applyWithViewHierarchyPrinting
|
||||
@ -33,8 +37,10 @@ import org.kiwix.kiwixmobile.Findable.StringId.TextId
|
||||
import org.kiwix.kiwixmobile.Findable.Text
|
||||
import org.kiwix.kiwixmobile.Findable.ViewId
|
||||
import org.kiwix.kiwixmobile.R
|
||||
import org.kiwix.kiwixmobile.core.page.bookmark.adapter.LibkiwixBookmarkItem
|
||||
import org.kiwix.kiwixmobile.testutils.TestUtils
|
||||
import org.kiwix.kiwixmobile.testutils.TestUtils.testFlakyView
|
||||
import org.kiwix.kiwixmobile.utils.StandardActions.openDrawer
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
fun bookmarks(func: BookmarksRobot.() -> Unit) =
|
||||
@ -105,4 +111,21 @@ class BookmarksRobot : BaseRobot() {
|
||||
private fun pauseForBetterTestPerformance() {
|
||||
BaristaSleepInteractions.sleep(TestUtils.TEST_PAUSE_MS_FOR_SEARCH_TEST.toLong())
|
||||
}
|
||||
|
||||
fun openBookmarkScreen() {
|
||||
testFlakyView({
|
||||
openDrawer()
|
||||
onView(withText(R.string.bookmarks)).perform(click())
|
||||
})
|
||||
}
|
||||
|
||||
fun testAllBookmarkShowing(bookmarkList: ArrayList<LibkiwixBookmarkItem>) {
|
||||
bookmarkList.forEachIndexed { index, libkiwixBookmarkItem ->
|
||||
testFlakyView({
|
||||
onView(withId(R.id.recycler_view))
|
||||
.perform(RecyclerViewActions.scrollToPosition<RecyclerView.ViewHolder>(index))
|
||||
.check(matches(hasDescendant(withText(libkiwixBookmarkItem.title))))
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,10 +22,10 @@ import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.edit
|
||||
import androidx.core.net.toUri
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import androidx.preference.PreferenceManager
|
||||
import androidx.test.core.app.ActivityScenario
|
||||
import androidx.test.espresso.accessibility.AccessibilityChecks
|
||||
import androidx.test.internal.runner.junit4.statement.UiThreadStatement
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.uiautomator.UiDevice
|
||||
import org.junit.Before
|
||||
@ -33,6 +33,8 @@ import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.kiwix.kiwixmobile.BaseActivityTest
|
||||
import org.kiwix.kiwixmobile.R
|
||||
import org.kiwix.kiwixmobile.core.main.CoreReaderFragment
|
||||
import org.kiwix.kiwixmobile.core.page.bookmark.adapter.LibkiwixBookmarkItem
|
||||
import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange
|
||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
||||
import org.kiwix.kiwixmobile.main.KiwixMainActivity
|
||||
@ -40,6 +42,8 @@ import org.kiwix.kiwixmobile.main.topLevel
|
||||
import org.kiwix.kiwixmobile.nav.destination.library.LocalLibraryFragmentDirections
|
||||
import org.kiwix.kiwixmobile.testutils.RetryRule
|
||||
import org.kiwix.kiwixmobile.testutils.TestUtils
|
||||
import org.kiwix.libkiwix.Book
|
||||
import org.kiwix.libkiwix.Bookmark
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.OutputStream
|
||||
@ -88,30 +92,9 @@ class LibkiwixBookmarkTest : BaseActivityTest() {
|
||||
activityScenario.onActivity {
|
||||
kiwixMainActivity = it
|
||||
kiwixMainActivity.navigate(R.id.libraryFragment)
|
||||
}
|
||||
val loadFileStream =
|
||||
LibkiwixBookmarkTest::class.java.classLoader.getResourceAsStream("testzim.zim")
|
||||
val zimFile = File(
|
||||
ContextCompat.getExternalFilesDirs(context, null)[0],
|
||||
"testzim.zim"
|
||||
)
|
||||
if (zimFile.exists()) zimFile.delete()
|
||||
zimFile.createNewFile()
|
||||
loadFileStream.use { inputStream ->
|
||||
val outputStream: OutputStream = FileOutputStream(zimFile)
|
||||
outputStream.use { it ->
|
||||
val buffer = ByteArray(inputStream.available())
|
||||
var length: Int
|
||||
while (inputStream.read(buffer).also { length = it } > 0) {
|
||||
it.write(buffer, 0, length)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UiThreadStatement.runOnUiThread {
|
||||
kiwixMainActivity.navigate(
|
||||
LocalLibraryFragmentDirections.actionNavigationLibraryToNavigationReader()
|
||||
.apply { zimFileUri = zimFile.toUri().toString() }
|
||||
.apply { zimFileUri = getZimFile().toUri().toString() }
|
||||
)
|
||||
}
|
||||
bookmarks {
|
||||
@ -143,4 +126,78 @@ class LibkiwixBookmarkTest : BaseActivityTest() {
|
||||
clickBookmarksOnNavDrawer(BookmarksRobot::assertBookmarkSaved)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSavedBookmarksShowingOnBookmarkScreen() {
|
||||
val zimFile = getZimFile()
|
||||
activityScenario.onActivity {
|
||||
kiwixMainActivity = it
|
||||
kiwixMainActivity.navigate(R.id.libraryFragment)
|
||||
kiwixMainActivity.navigate(
|
||||
LocalLibraryFragmentDirections.actionNavigationLibraryToNavigationReader()
|
||||
.apply { zimFileUri = zimFile.toUri().toString() }
|
||||
)
|
||||
}
|
||||
bookmarks {
|
||||
// delete any bookmark if already saved to properly perform this test case.
|
||||
longClickOnSaveBookmarkImage()
|
||||
clickOnTrashIcon()
|
||||
assertDeleteBookmarksDialogDisplayed()
|
||||
clickOnDeleteButton()
|
||||
assertNoBookMarkTextDisplayed()
|
||||
pressBack()
|
||||
}
|
||||
val navHostFragment: NavHostFragment =
|
||||
kiwixMainActivity.supportFragmentManager
|
||||
.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
||||
val coreReaderFragment = navHostFragment.childFragmentManager.fragments[0] as CoreReaderFragment
|
||||
val libKiwixBook = Book().apply {
|
||||
update(coreReaderFragment.zimReaderContainer?.zimFileReader?.jniKiwixReader)
|
||||
}
|
||||
val bookmarkList = arrayListOf<LibkiwixBookmarkItem>()
|
||||
for (i in 1..500) {
|
||||
val bookmark = Bookmark().apply {
|
||||
bookId = coreReaderFragment.zimReaderContainer?.zimFileReader?.id
|
||||
title = "bookmark$i"
|
||||
url = "http://kiwix.org/demoBookmark$i"
|
||||
bookTitle = libKiwixBook.title
|
||||
}
|
||||
val libkiwixItem =
|
||||
LibkiwixBookmarkItem(
|
||||
bookmark,
|
||||
coreReaderFragment.zimReaderContainer?.zimFileReader?.favicon,
|
||||
coreReaderFragment.zimReaderContainer?.zimFileReader?.zimFile?.canonicalPath
|
||||
)
|
||||
coreReaderFragment.libkiwixBookmarks?.saveBookmark(libkiwixItem).also {
|
||||
bookmarkList.add(libkiwixItem)
|
||||
}
|
||||
}
|
||||
bookmarks {
|
||||
// test all the saved bookmarks are showing on the bookmarks screen
|
||||
openBookmarkScreen()
|
||||
testAllBookmarkShowing(bookmarkList)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getZimFile(): File {
|
||||
val loadFileStream =
|
||||
LibkiwixBookmarkTest::class.java.classLoader.getResourceAsStream("testzim.zim")
|
||||
val zimFile = File(
|
||||
ContextCompat.getExternalFilesDirs(context, null)[0],
|
||||
"testzim.zim"
|
||||
)
|
||||
if (zimFile.exists()) zimFile.delete()
|
||||
zimFile.createNewFile()
|
||||
loadFileStream.use { inputStream ->
|
||||
val outputStream: OutputStream = FileOutputStream(zimFile)
|
||||
outputStream.use { it ->
|
||||
val buffer = ByteArray(inputStream.available())
|
||||
var length: Int
|
||||
while (inputStream.read(buffer).also { length = it } > 0) {
|
||||
it.write(buffer, 0, length)
|
||||
}
|
||||
}
|
||||
}
|
||||
return zimFile
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user