mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-22 12:03:09 -04:00
#1238 aim for 100% coverage
This commit is contained in:
parent
5079df2469
commit
39a964bf42
@ -65,8 +65,7 @@ class FileSearch @Inject constructor(private val context: Context) {
|
||||
directoryRoots(defaultPath)
|
||||
.minus(Environment.getExternalStorageDirectory().absolutePath)
|
||||
.fold(mutableListOf<File>(), { acc, root ->
|
||||
if (File(root).isDirectory) acc.addAll(scanDirectory(root))
|
||||
acc
|
||||
acc.apply { addAll(scanDirectory(root)) }
|
||||
})
|
||||
|
||||
private fun directoryRoots(defaultPath: String) = listOf(
|
||||
@ -78,10 +77,10 @@ class FileSearch @Inject constructor(private val context: Context) {
|
||||
private fun scanDirectory(directory: String) = filesMatchingExtensions(directory) ?: emptyList()
|
||||
|
||||
private fun filesMatchingExtensions(directory: String) = File(directory)
|
||||
.listFiles { dir, name -> name?.endsWithAny(*zimFileExtensions) ?: false }
|
||||
.listFiles { _, name -> name.endsWithAny(*zimFileExtensions) }
|
||||
?.toList()
|
||||
|
||||
}
|
||||
|
||||
private fun String.endsWithAny(vararg suffixes: String) =
|
||||
suffixes.fold(false, {acc, s -> acc or endsWith(s) })
|
||||
suffixes.fold(false, { acc, s -> acc or endsWith(s) })
|
||||
|
@ -1,6 +1,5 @@
|
||||
package org.kiwix.kiwixmobile.zim_manager.fileselect_view
|
||||
|
||||
import android.util.Log
|
||||
import io.reactivex.functions.BiFunction
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import org.kiwix.kiwixmobile.data.ZimContentProvider
|
||||
@ -45,18 +44,12 @@ class StorageObserver @Inject constructor(
|
||||
|
||||
private fun convertToBookOnDisk(file: File): BookOnDisk? {
|
||||
configureZimContentProvider()
|
||||
var bookOnDisk: BookOnDisk? = null
|
||||
if (ZimContentProvider.canIterate && ZimContentProvider.setZimFile(file.absolutePath) != null) {
|
||||
try {
|
||||
return BookOnDisk(book = bookFromZimContentProvider(), file = file)
|
||||
} catch (e: Exception) {
|
||||
// TODO 20171215 Consider more elegant approaches.
|
||||
// This is to see if we can catch the exception at all!
|
||||
Log.e("kiwix-filesearch", "Problem parsing a book entry from the library file. ", e)
|
||||
} finally {
|
||||
resetZimContentProvider()
|
||||
}
|
||||
bookOnDisk = BookOnDisk(book = bookFromZimContentProvider(), file = file)
|
||||
}
|
||||
return null
|
||||
resetZimContentProvider()
|
||||
return bookOnDisk
|
||||
}
|
||||
|
||||
private fun bookFromZimContentProvider() = Book().apply {
|
||||
@ -72,16 +65,16 @@ class StorageObserver @Inject constructor(
|
||||
language = ZimContentProvider.getLanguage()
|
||||
}
|
||||
|
||||
private fun configureZimContentProvider() {
|
||||
if (ZimContentProvider.zimFileName != null) {
|
||||
ZimContentProvider.originalFileName = ZimContentProvider.zimFileName
|
||||
}
|
||||
}
|
||||
|
||||
private fun resetZimContentProvider() {
|
||||
if (ZimContentProvider.originalFileName != "") {
|
||||
ZimContentProvider.setZimFile(ZimContentProvider.originalFileName)
|
||||
}
|
||||
ZimContentProvider.originalFileName = ""
|
||||
}
|
||||
|
||||
private fun configureZimContentProvider() {
|
||||
if (ZimContentProvider.zimFileName != null) {
|
||||
ZimContentProvider.originalFileName = ZimContentProvider.zimFileName
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,8 +22,10 @@ import io.mockk.clearAllMocks
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.mockkStatic
|
||||
import io.mockk.verify
|
||||
import io.reactivex.processors.PublishProcessor
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.AfterAll
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
@ -32,6 +34,7 @@ import org.kiwix.kiwixmobile.bookOnDisk
|
||||
import org.kiwix.kiwixmobile.data.ZimContentProvider
|
||||
import org.kiwix.kiwixmobile.database.newdb.dao.NewDownloadDao
|
||||
import org.kiwix.kiwixmobile.downloader.model.DownloadModel
|
||||
import org.kiwix.kiwixmobile.library.entity.LibraryNetworkEntity.Book
|
||||
import org.kiwix.kiwixmobile.resetSchedulers
|
||||
import org.kiwix.kiwixmobile.setScheduler
|
||||
import org.kiwix.kiwixmobile.utils.SharedPreferenceUtil
|
||||
@ -108,15 +111,7 @@ class StorageObserverTest {
|
||||
ZimContentProvider.canIterate = true
|
||||
every { ZimContentProvider.setZimFile("This won't match") } returns ""
|
||||
|
||||
every { ZimContentProvider.getZimFileTitle() } returns expectedBook.title
|
||||
every { ZimContentProvider.getId() } returns expectedBook.id
|
||||
every { ZimContentProvider.getFileSize() } returns expectedBook.size.toInt()
|
||||
every { ZimContentProvider.getFavicon() } returns expectedBook.favicon
|
||||
every { ZimContentProvider.getCreator() } returns expectedBook.creator
|
||||
every { ZimContentProvider.getPublisher() } returns expectedBook.publisher
|
||||
every { ZimContentProvider.getDate() } returns expectedBook.date
|
||||
every { ZimContentProvider.getDescription() } returns expectedBook.description
|
||||
every { ZimContentProvider.getLanguage() } returns expectedBook.language
|
||||
expect(expectedBook)
|
||||
|
||||
storageObserver.booksOnFileSystem
|
||||
.test()
|
||||
@ -134,5 +129,36 @@ class StorageObserverTest {
|
||||
|
||||
)
|
||||
)
|
||||
assertThat(ZimContentProvider.originalFileName).isEqualTo("")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `zim provider sets zim file to original file name if it exists`() {
|
||||
every { downloadModel.fileNameFromUrl } returns "test"
|
||||
every { file.absolutePath } returns "This is not"
|
||||
|
||||
mockkStatic(ZimContentProvider::class)
|
||||
every { ZimContentProvider.setZimFile(any()) } returns null
|
||||
ZimContentProvider.zimFileName = "myZimFileName"
|
||||
storageObserver.booksOnFileSystem
|
||||
.test()
|
||||
.also {
|
||||
downloads.offer(listOf(downloadModel))
|
||||
files.offer(listOf(file))
|
||||
}
|
||||
.assertValues(listOf())
|
||||
verify { ZimContentProvider.setZimFile("myZimFileName") }
|
||||
}
|
||||
|
||||
private fun expect(expectedBook: Book) {
|
||||
every { ZimContentProvider.getZimFileTitle() } returns expectedBook.title
|
||||
every { ZimContentProvider.getId() } returns expectedBook.id
|
||||
every { ZimContentProvider.getFileSize() } returns expectedBook.size.toInt()
|
||||
every { ZimContentProvider.getFavicon() } returns expectedBook.favicon
|
||||
every { ZimContentProvider.getCreator() } returns expectedBook.creator
|
||||
every { ZimContentProvider.getPublisher() } returns expectedBook.publisher
|
||||
every { ZimContentProvider.getDate() } returns expectedBook.date
|
||||
every { ZimContentProvider.getDescription() } returns expectedBook.description
|
||||
every { ZimContentProvider.getLanguage() } returns expectedBook.language
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user