diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index e80e48a..c2ff1aa 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -5,8 +5,8 @@ object Versions { const val ANDROID_GRADLE_PLUGIN = "7.4.2" const val JUNIT = "4.13.2" const val ROBOLECTRIC = "4.3" - const val MOCKITO = "3.12.4" - const val MOCKITO_KOTILN = "3.2.0" + const val MOCKITO = "4.11.0" + const val MOCKITO_KOTLIN = "4.1.0" const val CORE_KTX = "1.10.1" const val FRAGMENT_KTX = "1.2.4" const val DETEKT_RUNTIME = "1.23.1" @@ -15,7 +15,7 @@ object Versions { const val COMPILE_SDK_VERSION = 33 const val TARGET_SDK_VERSION = 33 - const val MIN_SDK_VERSION = 21 + const val MIN_SDK_VERSION = 23 private const val MAJOR = 0 private const val MINOR = 6 @@ -34,7 +34,7 @@ object Libs { const val JUNIT = "junit:junit:${Versions.JUNIT}" const val ROBOLECTRIC = "org.robolectric:robolectric:${Versions.ROBOLECTRIC}" const val MOCKITO = "org.mockito:mockito-core:${Versions.MOCKITO}" - const val MOCKITO_KOTLIN = "org.mockito.kotlin:mockito-kotlin:${Versions.MOCKITO_KOTILN}" + const val MOCKITO_KOTLIN = "org.mockito.kotlin:mockito-kotlin:${Versions.MOCKITO_KOTLIN}" const val CORE_KTX = "androidx.core:core-ktx:${Versions.CORE_KTX}" const val KOTLIN_TESTS = "org.jetbrains.kotlin:kotlin-test:${Versions.KOTLIN}" const val FRAGMENT_KTX = "androidx.fragment:fragment-ktx:${Versions.FRAGMENT_KTX}" diff --git a/library/src/main/java/com/vinted/coper/CoperFragment.kt b/library/src/main/java/com/vinted/coper/CoperFragment.kt index 6b730f9..fa9feae 100644 --- a/library/src/main/java/com/vinted/coper/CoperFragment.kt +++ b/library/src/main/java/com/vinted/coper/CoperFragment.kt @@ -1,6 +1,5 @@ package com.vinted.coper -import android.os.Build import android.os.Bundle import android.util.Log import androidx.annotation.VisibleForTesting @@ -101,7 +100,7 @@ internal class CoperFragment : Fragment() { getDeniedPermissionsResult(denied) } else { getPermissionsResult( - permissionChecks = requestPermissionsByVersion(denied.toTypedArray()), + permissionChecks = requestPermissionsAsync(denied.toTypedArray()).await(), grantedPermissions = granted, isSecondTime = true ) @@ -122,21 +121,6 @@ internal class CoperFragment : Fragment() { return PermissionResult.Denied(deniedPermissions) } - // On devices with lower sdk than 23, there is no requesting permissions. - private suspend fun requestPermissionsByVersion( - permissions: Array - ): List { - return if (isDeviceSdkAtLeastMarshmallow()) { - requestPermissionsAsync(permissions).await() - } else { - permissions.map { PermissionCheckResult.Denied(it) } - } - } - - private fun isDeviceSdkAtLeastMarshmallow(): Boolean { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M - } - private fun requestPermissionsAsync( permissions: Array ): Deferred> { @@ -237,13 +221,7 @@ internal class CoperFragment : Fragment() { fun of(permissionResult: Int, permission: String): PermissionCheckResult { return when (permissionResult) { PermissionChecker.PERMISSION_GRANTED -> Granted(permission) - PermissionChecker.PERMISSION_DENIED, - PermissionChecker.PERMISSION_DENIED_APP_OP -> Denied(permission) - else -> { - val message = "Not expected permission result: $permissionResult " + - "for $permission" - throw IllegalStateException(message) - } + else -> Denied(permission) } } } diff --git a/library/src/test/java/com/vinted/coper/CoperImplTest.kt b/library/src/test/java/com/vinted/coper/CoperImplTest.kt index ab53025..179b92f 100644 --- a/library/src/test/java/com/vinted/coper/CoperImplTest.kt +++ b/library/src/test/java/com/vinted/coper/CoperImplTest.kt @@ -46,7 +46,7 @@ class CoperImplTest { } @Test - @Config(sdk = [21, 23, 27]) + @Config(sdk = [23, 27]) fun request_responseIsSuccessful() = runTest { val response = fixture.request("test") @@ -54,7 +54,7 @@ class CoperImplTest { } @Test - @Config(sdk = [21, 23, 27]) + @Config(sdk = [23, 27]) fun request_permissionsIsGranted_grantedListConsistOfThisPermission() = runTest { val permissionName = "granted" shadowOf(activity).grantPermissions(permissionName) @@ -66,7 +66,7 @@ class CoperImplTest { } @Test - @Config(sdk = [21, 23, 27]) + @Config(sdk = [23, 27]) fun request_twoPermissionsIsGranted_grantedListConsistOfThisPermissions() = runTest { val firstPermission = "granted" val secondPermission = "granted2" @@ -78,18 +78,6 @@ class CoperImplTest { assertEquals(listOf(firstPermission, secondPermission), response.grantedPermissions) } - @Test - @Config(sdk = [21]) - fun request_sdkUnder23AndPermissionsDenied_permissionResultDeniedWaitingResult() = runTest { - val permission = "denied" - shadowOf(activity).denyPermissions(permission) - - val response = fixture.request(permission) - - assertTrue(response.isDenied()) - assertEquals(listOf(permission), response.getAllDeniedPermissions()) - } - @Test fun request_permissionsIsDeniedRationale_permissionDeniedRationaleResult() = runTest { val permissionName = "denied" @@ -658,7 +646,7 @@ class CoperImplTest { } @Test - @Config(sdk = [21, 23, 27]) + @Config(sdk = [23, 27]) fun isPermissionsGranted_permissionsNotGranted_returnsFalse() = runTest { val permission = "not_granted" shadowOf(activity).denyPermissions(permission) @@ -669,7 +657,7 @@ class CoperImplTest { } @Test - @Config(sdk = [21, 23, 27]) + @Config(sdk = [23, 27]) fun isPermissionsGranted_permissionsGranted_returnsTrue() = runTest { val permission = "granted" shadowOf(activity).grantPermissions(permission) @@ -719,7 +707,7 @@ class CoperImplTest { } @Test - @Config(sdk = [21, 23, 27]) + @Config(sdk = [23, 27]) fun request_runOnPausingDispatcher_responseIsSuccessful() = runTest { val isCancelled = fixture.getFragmentSafely().lifecycleScope.launchWhenCreated { fixture.request("test")