Changes after review

This commit is contained in:
MohitMali 2022-09-20 14:21:05 +05:30 committed by Kelson
parent 5acf04894c
commit 5c39f095c3
4 changed files with 48 additions and 33 deletions

View File

@ -42,6 +42,8 @@ import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.kiwix.kiwixmobile.main.KiwixMainActivity import org.kiwix.kiwixmobile.main.KiwixMainActivity
import org.kiwix.kiwixmobile.testutils.TestUtils import org.kiwix.kiwixmobile.testutils.TestUtils
import org.kiwix.kiwixmobile.testutils.TestUtils.allowStoragePermission
import org.kiwix.kiwixmobile.testutils.TestUtils.hasStoragePermission
import org.kiwix.kiwixmobile.utils.KiwixIdlingResource.Companion.getInstance import org.kiwix.kiwixmobile.utils.KiwixIdlingResource.Companion.getInstance
import org.kiwix.kiwixmobile.utils.StandardActions import org.kiwix.kiwixmobile.utils.StandardActions
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@ -71,7 +73,9 @@ class DownloadTest {
BaristaSleepInteractions.sleep(TestUtils.TEST_PAUSE_MS.toLong()) BaristaSleepInteractions.sleep(TestUtils.TEST_PAUSE_MS.toLong())
clickMenu(TestUtils.getResourceString(R.string.library)) clickMenu(TestUtils.getResourceString(R.string.library))
clickOn(R.string.local_zims) clickOn(R.string.local_zims)
TestUtils.allowPermissionsIfNeeded() if (!hasStoragePermission()) {
allowStoragePermission()
}
StandardActions.deleteZimIfExists("ray_charles", R.id.zimfilelist) StandardActions.deleteZimIfExists("ray_charles", R.id.zimfilelist)
clickOn(R.string.remote_zims) clickOn(R.string.remote_zims)
TestUtils.captureAndSaveScreenshot("Before-checking-for-ZimManager-Main-Activity") TestUtils.captureAndSaveScreenshot("Before-checking-for-ZimManager-Main-Activity")

View File

@ -49,9 +49,7 @@ import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.longClick; import static androidx.test.espresso.action.ViewActions.longClick;
import static androidx.test.espresso.matcher.ViewMatchers.withId; import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn;
import static com.adevinta.android.barista.interaction.BaristaDialogInteractions.clickDialogPositiveButton; import static com.adevinta.android.barista.interaction.BaristaDialogInteractions.clickDialogPositiveButton;
import static com.adevinta.android.barista.interaction.BaristaMenuClickInteractions.clickMenu;
import static com.adevinta.android.barista.interaction.BaristaSwipeRefreshInteractions.refresh; import static com.adevinta.android.barista.interaction.BaristaSwipeRefreshInteractions.refresh;
import static org.hamcrest.CoreMatchers.allOf; import static org.hamcrest.CoreMatchers.allOf;
import static org.kiwix.kiwixmobile.testutils.TestUtils.TEST_PAUSE_MS; import static org.kiwix.kiwixmobile.testutils.TestUtils.TEST_PAUSE_MS;
@ -120,7 +118,9 @@ public class NetworkTest {
BaristaSleepInteractions.sleep(TEST_PAUSE_MS); BaristaSleepInteractions.sleep(TEST_PAUSE_MS);
BaristaMenuClickInteractions.clickMenu(getResourceString(R.string.library)); BaristaMenuClickInteractions.clickMenu(getResourceString(R.string.library));
TestUtils.allowPermissionsIfNeeded(); if (!TestUtils.hasStoragePermission()) {
TestUtils.allowStoragePermission();
}
onData(withContent("wikipedia_ab_all_2017-03")).inAdapterView(withId(R.id.libraryList)) onData(withContent("wikipedia_ab_all_2017-03")).inAdapterView(withId(R.id.libraryList))
.perform(click()); .perform(click());

View File

@ -18,25 +18,26 @@
package org.kiwix.kiwixmobile.testutils package org.kiwix.kiwixmobile.testutils
import android.Manifest import android.Manifest
import androidx.core.content.ContextCompat
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.graphics.Bitmap import android.graphics.Bitmap
import android.os.Build import android.os.Build
import android.os.Environment import android.os.Environment
import android.util.Log import android.util.Log
import androidx.test.uiautomator.UiDevice import androidx.annotation.RequiresApi
import androidx.test.uiautomator.UiSelector import androidx.core.content.ContextCompat
import androidx.test.uiautomator.UiObjectNotFoundException
import androidx.test.runner.screenshot.Screenshot
import androidx.test.espresso.matcher.BoundedMatcher import androidx.test.espresso.matcher.BoundedMatcher
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.runner.screenshot.Screenshot
import androidx.test.uiautomator.UiDevice
import androidx.test.uiautomator.UiObjectNotFoundException
import androidx.test.uiautomator.UiSelector
import org.hamcrest.Description import org.hamcrest.Description
import org.hamcrest.Matcher import org.hamcrest.Matcher
import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity
import java.io.File import java.io.File
import java.io.FileNotFoundException import java.io.FileNotFoundException
import java.io.FileOutputStream import java.io.FileOutputStream
import java.io.IOException import java.io.OutputStream
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
@ -60,29 +61,39 @@ object TestUtils {
however I'm unsure if however I'm unsure if
it's speed related, or Android Version related. it's speed related, or Android Version related.
*/ */
private fun hasStoragePermission(): Boolean {
return ContextCompat.checkSelfPermission( private fun hasReadExternalStoragePermission(): Boolean =
ContextCompat.checkSelfPermission(
InstrumentationRegistry.getInstrumentation().targetContext, InstrumentationRegistry.getInstrumentation().targetContext,
Manifest.permission.READ_EXTERNAL_STORAGE Manifest.permission.READ_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission( ) == PackageManager.PERMISSION_GRANTED
private fun hasWriteExternalStoragePermission(): Boolean =
ContextCompat.checkSelfPermission(
InstrumentationRegistry.getInstrumentation().targetContext, InstrumentationRegistry.getInstrumentation().targetContext,
Manifest.permission.WRITE_EXTERNAL_STORAGE Manifest.permission.WRITE_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED ) == PackageManager.PERMISSION_GRANTED
}
@JvmStatic fun allowPermissionsIfNeeded() { @RequiresApi(Build.VERSION_CODES.R)
if (Build.VERSION.SDK_INT >= 23 && !hasStoragePermission()) { private fun hasManageExternalStoragePermission(): Boolean =
val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()) Environment.isExternalStorageManager()
val allowPermissions =
device.findObject( @JvmStatic fun hasStoragePermission(): Boolean =
UiSelector().clickable(true) if (Build.VERSION.SDK_INT < 23) true
.checkable(false).index(1) else hasReadExternalStoragePermission() && hasWriteExternalStoragePermission()
)
if (allowPermissions.exists()) { @JvmStatic fun allowStoragePermission() {
try { val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
allowPermissions.click() val allowPermissions =
} catch (e: UiObjectNotFoundException) { device.findObject(
} UiSelector().clickable(true)
.checkable(false).index(1)
)
if (allowPermissions.exists()) {
try {
allowPermissions.click()
} catch (e: UiObjectNotFoundException) {
Log.w(TAG, "Unable to find allow permission dialog", e)
} }
} }
} }
@ -101,14 +112,14 @@ object TestUtils {
val fileName = "TEST_${timestamp}_$name.png" val fileName = "TEST_${timestamp}_$name.png"
val outFile = File(screenshotDir.path + File.separator + fileName) val outFile = File(screenshotDir.path + File.separator + fileName)
val screenshot = Screenshot.capture().bitmap ?: return val screenshot = Screenshot.capture().bitmap ?: return
var fos: OutputStream? = null
try { try {
val fos = FileOutputStream(outFile) fos = FileOutputStream(outFile)
screenshot.compress(Bitmap.CompressFormat.PNG, 90, fos) screenshot.compress(Bitmap.CompressFormat.PNG, 90, fos)
fos.close()
} catch (e: FileNotFoundException) { } catch (e: FileNotFoundException) {
Log.w(TAG, "Failed to save Screenshot", e) Log.w(TAG, "Unable to create file $outFile", e)
} catch (e: IOException) { } finally {
Log.w(TAG, "Failed to save Screenshot", e) fos?.close()
} }
} }

View File

@ -91,7 +91,7 @@ public class LibraryNetworkEntity {
public String tags; public String tags;
public int searchMatches = 0; public int searchMatches = 0;
@Deprecated
public File file; public File file;
@Deprecated @Deprecated
public String remoteUrl; public String remoteUrl;