From 591e3772f0c8535c374dc867352ebe71c497f181 Mon Sep 17 00:00:00 2001 From: Arnas Smicius Date: Tue, 19 Sep 2023 13:56:20 +0300 Subject: [PATCH 1/2] Bump Mockito 3.12.4 -> 4.11.0 and Mockito-kotlin 3.2.0 -> 4.1.0 (#37) --- buildSrc/src/main/kotlin/Dependencies.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index e80e48a..2129353 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" @@ -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}" From b15df252e55ebd4769460925623aa865e98ef9c0 Mon Sep 17 00:00:00 2001 From: Arnas Smicius Date: Tue, 19 Sep 2023 15:37:17 +0300 Subject: [PATCH 2/2] Bump min SDK version to 23 (#38) --- buildSrc/src/main/kotlin/Dependencies.kt | 2 +- .../java/com/vinted/coper/CoperFragment.kt | 26 ++----------------- .../java/com/vinted/coper/CoperImplTest.kt | 26 +++++-------------- 3 files changed, 10 insertions(+), 44 deletions(-) diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index 2129353..c2ff1aa 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -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 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 c7abaca..660eb1f 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" mockCheckPermissions(permissionName, PackageManager.PERMISSION_GRANTED) @@ -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" @@ -79,18 +79,6 @@ class CoperImplTest { assertEquals(listOf(firstPermission, secondPermission), response.grantedPermissions) } - @Test - @Config(sdk = [21]) - fun request_sdkUnder23AndPermissionsDenied_permissionResultDeniedWaitingResult() = runTest { - val permission = "denied" - mockCheckPermissions(permission, PackageManager.PERMISSION_DENIED) - - val response = fixture.request(permission) - - assertTrue(response.isDenied()) - assertEquals(listOf(permission), response.getAllDeniedPermissions()) - } - @Test fun request_permissionsIsDeniedRationale_permissionDeniedRationaleResult() = runTest { val permissionName = "denied" @@ -669,7 +657,7 @@ class CoperImplTest { } @Test - @Config(sdk = [21, 23, 27]) + @Config(sdk = [23, 27]) fun isPermissionsGranted_permissionsNotGranted_returnsFalse() = runTest { mockCheckPermissions("not_granted", PermissionChecker.PERMISSION_DENIED) @@ -679,7 +667,7 @@ class CoperImplTest { } @Test - @Config(sdk = [21, 23, 27]) + @Config(sdk = [23, 27]) fun isPermissionsGranted_permissionsNotGrantedByOp_returnsFalse() = runTest { mockCheckPermissions("not_granted_op", PermissionChecker.PERMISSION_DENIED_APP_OP) @@ -689,7 +677,7 @@ class CoperImplTest { } @Test - @Config(sdk = [21, 23, 27]) + @Config(sdk = [23, 27]) fun isPermissionsGranted_permissionsGranted_returnsTrue() = runTest { mockCheckPermissions("granted", PermissionChecker.PERMISSION_GRANTED) @@ -738,7 +726,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")