mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-14 18:06:39 -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
|
package org.kiwix.kiwixmobile.page.bookmarks
|
||||||
|
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.test.espresso.Espresso.onView
|
import androidx.test.espresso.Espresso.onView
|
||||||
import androidx.test.espresso.action.ViewActions.click
|
import androidx.test.espresso.action.ViewActions.click
|
||||||
import androidx.test.espresso.action.ViewActions.longClick
|
import androidx.test.espresso.action.ViewActions.longClick
|
||||||
import androidx.test.espresso.assertion.ViewAssertions
|
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.withId
|
||||||
import androidx.test.espresso.matcher.ViewMatchers.withText
|
import androidx.test.espresso.matcher.ViewMatchers.withText
|
||||||
import applyWithViewHierarchyPrinting
|
import applyWithViewHierarchyPrinting
|
||||||
@ -33,8 +37,10 @@ import org.kiwix.kiwixmobile.Findable.StringId.TextId
|
|||||||
import org.kiwix.kiwixmobile.Findable.Text
|
import org.kiwix.kiwixmobile.Findable.Text
|
||||||
import org.kiwix.kiwixmobile.Findable.ViewId
|
import org.kiwix.kiwixmobile.Findable.ViewId
|
||||||
import org.kiwix.kiwixmobile.R
|
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
|
||||||
import org.kiwix.kiwixmobile.testutils.TestUtils.testFlakyView
|
import org.kiwix.kiwixmobile.testutils.TestUtils.testFlakyView
|
||||||
|
import org.kiwix.kiwixmobile.utils.StandardActions.openDrawer
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
fun bookmarks(func: BookmarksRobot.() -> Unit) =
|
fun bookmarks(func: BookmarksRobot.() -> Unit) =
|
||||||
@ -105,4 +111,21 @@ class BookmarksRobot : BaseRobot() {
|
|||||||
private fun pauseForBetterTestPerformance() {
|
private fun pauseForBetterTestPerformance() {
|
||||||
BaristaSleepInteractions.sleep(TestUtils.TEST_PAUSE_MS_FOR_SEARCH_TEST.toLong())
|
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.content.edit
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
|
import androidx.navigation.fragment.NavHostFragment
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import androidx.test.core.app.ActivityScenario
|
import androidx.test.core.app.ActivityScenario
|
||||||
import androidx.test.espresso.accessibility.AccessibilityChecks
|
import androidx.test.espresso.accessibility.AccessibilityChecks
|
||||||
import androidx.test.internal.runner.junit4.statement.UiThreadStatement
|
|
||||||
import androidx.test.platform.app.InstrumentationRegistry
|
import androidx.test.platform.app.InstrumentationRegistry
|
||||||
import androidx.test.uiautomator.UiDevice
|
import androidx.test.uiautomator.UiDevice
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
@ -33,6 +33,8 @@ import org.junit.Rule
|
|||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.kiwix.kiwixmobile.BaseActivityTest
|
import org.kiwix.kiwixmobile.BaseActivityTest
|
||||||
import org.kiwix.kiwixmobile.R
|
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.LanguageUtils.Companion.handleLocaleChange
|
||||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
||||||
import org.kiwix.kiwixmobile.main.KiwixMainActivity
|
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.nav.destination.library.LocalLibraryFragmentDirections
|
||||||
import org.kiwix.kiwixmobile.testutils.RetryRule
|
import org.kiwix.kiwixmobile.testutils.RetryRule
|
||||||
import org.kiwix.kiwixmobile.testutils.TestUtils
|
import org.kiwix.kiwixmobile.testutils.TestUtils
|
||||||
|
import org.kiwix.libkiwix.Book
|
||||||
|
import org.kiwix.libkiwix.Bookmark
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
@ -88,30 +92,9 @@ class LibkiwixBookmarkTest : BaseActivityTest() {
|
|||||||
activityScenario.onActivity {
|
activityScenario.onActivity {
|
||||||
kiwixMainActivity = it
|
kiwixMainActivity = it
|
||||||
kiwixMainActivity.navigate(R.id.libraryFragment)
|
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(
|
kiwixMainActivity.navigate(
|
||||||
LocalLibraryFragmentDirections.actionNavigationLibraryToNavigationReader()
|
LocalLibraryFragmentDirections.actionNavigationLibraryToNavigationReader()
|
||||||
.apply { zimFileUri = zimFile.toUri().toString() }
|
.apply { zimFileUri = getZimFile().toUri().toString() }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
bookmarks {
|
bookmarks {
|
||||||
@ -143,4 +126,78 @@ class LibkiwixBookmarkTest : BaseActivityTest() {
|
|||||||
clickBookmarksOnNavDrawer(BookmarksRobot::assertBookmarkSaved)
|
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