From 476733bf914213ba0c6c6cc9120a9086612058c7 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Wed, 18 Sep 2024 19:07:53 +0530 Subject: [PATCH] Fixed the ZimManageViewModelTest. --- .../zimManager/ZimManageViewModel.kt | 20 +++++++++++++++++-- .../zimManager/ZimManageViewModelTest.kt | 7 ++++++- .../core/utils/SharedPreferenceUtil.kt | 2 +- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModel.kt b/app/src/main/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModel.kt index e84585f89..262bf4150 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModel.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModel.kt @@ -129,6 +129,7 @@ class ZimManageViewModel @Inject constructor( object UserClickedDownloadBooksButton : FileSelectActions() } + private var isUnitTestCase: Boolean = false val sideEffects = PublishProcessor.create>() val libraryItems: MutableLiveData> = MutableLiveData() val fileSelectListStates: MutableLiveData = MutableLiveData() @@ -150,7 +151,12 @@ class ZimManageViewModel @Inject constructor( context.registerReceiver(connectivityBroadcastReceiver) } + fun setIsUnitTestCase() { + isUnitTestCase = true + } + private fun createKiwixServiceWithProgressListener(): KiwixService { + if (isUnitTestCase) return kiwixService val contentLength = getContentLengthOfLibraryXmlFile() val customOkHttpClient = OkHttpClient().newBuilder() .followRedirects(true) @@ -178,6 +184,9 @@ class ZimManageViewModel @Inject constructor( } .build() return KiwixService.ServiceCreator.newHackListService(customOkHttpClient, KIWIX_DOWNLOAD_URL) + .also { + kiwixService = it + } } private fun getContentLengthOfLibraryXmlFile(): Long { @@ -327,7 +336,12 @@ class ZimManageViewModel @Inject constructor( .subscribeOn(Schedulers.io()) .observeOn(Schedulers.io()) .concatMap { - createKiwixServiceWithProgressListener().library + Flowable.fromCallable { + synchronized(this, ::createKiwixServiceWithProgressListener) + } + } + .concatMap { + kiwixService.library .toFlowable() .retry(5) .doOnSubscribe { @@ -347,7 +361,9 @@ class ZimManageViewModel @Inject constructor( LibraryNetworkEntity().apply { book = LinkedList() } } } - .subscribe(library::onNext, Throwable::printStackTrace) + .subscribe(library::onNext, Throwable::printStackTrace).also { + compositeDisposable?.add(it) + } private fun updateNetworkStates() = connectivityBroadcastReceiver.networkStates.subscribe( diff --git a/app/src/test/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModelTest.kt b/app/src/test/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModelTest.kt index 4e8cec4c4..91a63a8cc 100644 --- a/app/src/test/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModelTest.kt +++ b/app/src/test/java/org/kiwix/kiwixmobile/zimManager/ZimManageViewModelTest.kt @@ -157,7 +157,7 @@ class ZimManageViewModelTest { dataSource, connectivityManager, sharedPreferenceUtil - ) + ).apply(ZimManageViewModel::setIsUnitTestCase) testScheduler.triggerActions() } @@ -333,6 +333,7 @@ class ZimManageViewModelTest { defaultLanguage: Language ) { every { application.getString(any()) } returns "" + every { application.getString(any(), any()) } returns "" every { kiwixService.library } returns Single.just( libraryNetworkEntity(networkBooks) ) @@ -372,6 +373,8 @@ class ZimManageViewModelTest { language = "inactiveLanguage", url = "" ) + every { application.getString(any()) } returns "" + every { application.getString(any(), any()) } returns "" every { kiwixService.library } returns Single.just( libraryNetworkEntity( listOf( @@ -412,6 +415,8 @@ class ZimManageViewModelTest { url = "", size = "${Fat32Checker.FOUR_GIGABYTES_IN_KILOBYTES + 1}" ) + every { application.getString(any()) } returns "" + every { application.getString(any(), any()) } returns "" every { kiwixService.library } returns Single.just( libraryNetworkEntity( listOf(bookOver4Gb) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.kt index ad321b495..55add2af5 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/SharedPreferenceUtil.kt @@ -288,7 +288,7 @@ class SharedPreferenceUtil @Inject constructor(val context: Context) { } fun getPublicDirectoryPath(path: String): String = - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { path } else { path.substringBefore(context.getString(R.string.android_directory_seperator))