Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into technical/use_shado…
Browse files Browse the repository at this point in the history
…ws_instead_mocks
  • Loading branch information
ArnasSmicius committed Sep 19, 2023
2 parents d86baa6 + b15df25 commit 199c17b
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 46 deletions.
8 changes: 4 additions & 4 deletions buildSrc/src/main/kotlin/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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
Expand All @@ -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}"
Expand Down
26 changes: 2 additions & 24 deletions library/src/main/java/com/vinted/coper/CoperFragment.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.vinted.coper

import android.os.Build
import android.os.Bundle
import android.util.Log
import androidx.annotation.VisibleForTesting
Expand Down Expand Up @@ -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
)
Expand All @@ -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<out String>
): List<PermissionCheckResult> {
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<out String>
): Deferred<List<PermissionCheckResult>> {
Expand Down Expand Up @@ -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)
}
}
}
Expand Down
24 changes: 6 additions & 18 deletions library/src/test/java/com/vinted/coper/CoperImplTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,15 @@ class CoperImplTest {
}

@Test
@Config(sdk = [21, 23, 27])
@Config(sdk = [23, 27])
fun request_responseIsSuccessful() = runTest {
val response = fixture.request("test")

assertTrue(response.isGranted())
}

@Test
@Config(sdk = [21, 23, 27])
@Config(sdk = [23, 27])
fun request_permissionsIsGranted_grantedListConsistOfThisPermission() = runTest {
val permissionName = "granted"
shadowOf(activity).grantPermissions(permissionName)
Expand All @@ -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"
Expand All @@ -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"
Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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")
Expand Down

0 comments on commit 199c17b

Please sign in to comment.