Fixed the ZimManageViewModelTest.

This commit is contained in:
MohitMaliFtechiz 2024-09-18 19:07:53 +05:30
parent 318ae98d31
commit 476733bf91
3 changed files with 25 additions and 4 deletions

View File

@ -129,6 +129,7 @@ class ZimManageViewModel @Inject constructor(
object UserClickedDownloadBooksButton : FileSelectActions() object UserClickedDownloadBooksButton : FileSelectActions()
} }
private var isUnitTestCase: Boolean = false
val sideEffects = PublishProcessor.create<SideEffect<Any?>>() val sideEffects = PublishProcessor.create<SideEffect<Any?>>()
val libraryItems: MutableLiveData<List<LibraryListItem>> = MutableLiveData() val libraryItems: MutableLiveData<List<LibraryListItem>> = MutableLiveData()
val fileSelectListStates: MutableLiveData<FileSelectListState> = MutableLiveData() val fileSelectListStates: MutableLiveData<FileSelectListState> = MutableLiveData()
@ -150,7 +151,12 @@ class ZimManageViewModel @Inject constructor(
context.registerReceiver(connectivityBroadcastReceiver) context.registerReceiver(connectivityBroadcastReceiver)
} }
fun setIsUnitTestCase() {
isUnitTestCase = true
}
private fun createKiwixServiceWithProgressListener(): KiwixService { private fun createKiwixServiceWithProgressListener(): KiwixService {
if (isUnitTestCase) return kiwixService
val contentLength = getContentLengthOfLibraryXmlFile() val contentLength = getContentLengthOfLibraryXmlFile()
val customOkHttpClient = OkHttpClient().newBuilder() val customOkHttpClient = OkHttpClient().newBuilder()
.followRedirects(true) .followRedirects(true)
@ -178,6 +184,9 @@ class ZimManageViewModel @Inject constructor(
} }
.build() .build()
return KiwixService.ServiceCreator.newHackListService(customOkHttpClient, KIWIX_DOWNLOAD_URL) return KiwixService.ServiceCreator.newHackListService(customOkHttpClient, KIWIX_DOWNLOAD_URL)
.also {
kiwixService = it
}
} }
private fun getContentLengthOfLibraryXmlFile(): Long { private fun getContentLengthOfLibraryXmlFile(): Long {
@ -327,7 +336,12 @@ class ZimManageViewModel @Inject constructor(
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(Schedulers.io()) .observeOn(Schedulers.io())
.concatMap { .concatMap {
createKiwixServiceWithProgressListener().library Flowable.fromCallable {
synchronized(this, ::createKiwixServiceWithProgressListener)
}
}
.concatMap {
kiwixService.library
.toFlowable() .toFlowable()
.retry(5) .retry(5)
.doOnSubscribe { .doOnSubscribe {
@ -347,7 +361,9 @@ class ZimManageViewModel @Inject constructor(
LibraryNetworkEntity().apply { book = LinkedList() } LibraryNetworkEntity().apply { book = LinkedList() }
} }
} }
.subscribe(library::onNext, Throwable::printStackTrace) .subscribe(library::onNext, Throwable::printStackTrace).also {
compositeDisposable?.add(it)
}
private fun updateNetworkStates() = private fun updateNetworkStates() =
connectivityBroadcastReceiver.networkStates.subscribe( connectivityBroadcastReceiver.networkStates.subscribe(

View File

@ -157,7 +157,7 @@ class ZimManageViewModelTest {
dataSource, dataSource,
connectivityManager, connectivityManager,
sharedPreferenceUtil sharedPreferenceUtil
) ).apply(ZimManageViewModel::setIsUnitTestCase)
testScheduler.triggerActions() testScheduler.triggerActions()
} }
@ -333,6 +333,7 @@ class ZimManageViewModelTest {
defaultLanguage: Language defaultLanguage: Language
) { ) {
every { application.getString(any()) } returns "" every { application.getString(any()) } returns ""
every { application.getString(any(), any()) } returns ""
every { kiwixService.library } returns Single.just( every { kiwixService.library } returns Single.just(
libraryNetworkEntity(networkBooks) libraryNetworkEntity(networkBooks)
) )
@ -372,6 +373,8 @@ class ZimManageViewModelTest {
language = "inactiveLanguage", language = "inactiveLanguage",
url = "" url = ""
) )
every { application.getString(any()) } returns ""
every { application.getString(any(), any()) } returns ""
every { kiwixService.library } returns Single.just( every { kiwixService.library } returns Single.just(
libraryNetworkEntity( libraryNetworkEntity(
listOf( listOf(
@ -412,6 +415,8 @@ class ZimManageViewModelTest {
url = "", url = "",
size = "${Fat32Checker.FOUR_GIGABYTES_IN_KILOBYTES + 1}" size = "${Fat32Checker.FOUR_GIGABYTES_IN_KILOBYTES + 1}"
) )
every { application.getString(any()) } returns ""
every { application.getString(any(), any()) } returns ""
every { kiwixService.library } returns Single.just( every { kiwixService.library } returns Single.just(
libraryNetworkEntity( libraryNetworkEntity(
listOf(bookOver4Gb) listOf(bookOver4Gb)

View File

@ -288,7 +288,7 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) {
} }
fun getPublicDirectoryPath(path: String): String = fun getPublicDirectoryPath(path: String): String =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
path path
} else { } else {
path.substringBefore(context.getString(R.string.android_directory_seperator)) path.substringBefore(context.getString(R.string.android_directory_seperator))