diff options
author | 2024-05-03 14:29:33 -0400 | |
---|---|---|
committer | 2024-05-03 19:12:28 +0000 | |
commit | 15b183c62ba65ea60c4e24d41e2762bcc157dbc3 (patch) | |
tree | f240b0aecaee0142e23e664124a10205a425d461 /tests | |
parent | a5b9e757f907d1e8adba3c16a30ee70d988045f6 (diff) |
Migrate to mockito-kotlin
Flag: TEST_ONLY
Bug: N/A
Test: atest IntentResolver-tests-unit
Change-Id: I9e49a4bdfe9ba8022a7b915d6aa3d79c8b992154
Diffstat (limited to 'tests')
19 files changed, 212 insertions, 200 deletions
diff --git a/tests/shared/src/com/android/intentresolver/MockitoKotlinHelpers.kt b/tests/shared/src/com/android/intentresolver/MockitoKotlinHelpers.kt index 40ee6325..755262ee 100644 --- a/tests/shared/src/com/android/intentresolver/MockitoKotlinHelpers.kt +++ b/tests/shared/src/com/android/intentresolver/MockitoKotlinHelpers.kt @@ -18,6 +18,7 @@ package com.android.intentresolver +import kotlin.DeprecationLevel.ERROR import kotlin.DeprecationLevel.WARNING import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatcher @@ -45,7 +46,7 @@ import org.mockito.stubbing.Stubber @Deprecated( "Replace with mockito-kotlin. See http://go/mockito-kotlin", ReplaceWith(expression = "eq", imports = ["org.mockito.kotlin.eq"]), - level = WARNING + level = ERROR ) inline fun <T> eq(obj: T): T = Mockito.eq<T>(obj) ?: obj @@ -58,7 +59,7 @@ inline fun <T> eq(obj: T): T = Mockito.eq<T>(obj) ?: obj @Deprecated( "Replace with mockito-kotlin. See http://go/mockito-kotlin", ReplaceWith(expression = "same(obj)", imports = ["org.mockito.kotlin.same"]), - level = WARNING + level = ERROR ) inline fun <T> same(obj: T): T = Mockito.same<T>(obj) ?: obj @@ -103,7 +104,7 @@ inline fun <T> argThat(matcher: ArgumentMatcher<T>): T = Mockito.argThat(matcher @Deprecated( "Replace with mockito-kotlin. See http://go/mockito-kotlin", ReplaceWith(expression = "anyOrNull()", imports = ["org.mockito.kotlin.anyOrNull"]), - level = WARNING + level = ERROR ) inline fun <reified T> nullable(): T? = Mockito.nullable(T::class.java) @@ -118,7 +119,7 @@ inline fun <reified T> nullable(): T? = Mockito.nullable(T::class.java) @Deprecated( "Replace with mockito-kotlin. See http://go/mockito-kotlin", ReplaceWith(expression = "capture(argumentCaptor)", imports = ["org.mockito.kotlin.capture"]), - level = WARNING + level = ERROR ) inline fun <T> capture(argumentCaptor: ArgumentCaptor<T>): T = argumentCaptor.capture() @@ -132,7 +133,7 @@ inline fun <T> capture(argumentCaptor: ArgumentCaptor<T>): T = argumentCaptor.ca @Deprecated( "Replace with mockito-kotlin. See http://go/mockito-kotlin", ReplaceWith(expression = "argumentCaptor()", imports = ["org.mockito.kotlin.argumentCaptor"]), - level = WARNING + level = ERROR ) inline fun <reified T : Any> argumentCaptor(): ArgumentCaptor<T> = ArgumentCaptor.forClass(T::class.java) @@ -169,7 +170,7 @@ inline fun <reified T : Any> mock( @Deprecated( "Replace with mockito-kotlin. See http://go/mockito-kotlin", ReplaceWith(expression = "anyArray()", imports = ["org.mockito.kotlin.anyArray"]), - level = WARNING + level = ERROR ) inline fun <reified T : Any?> anyArray(): Array<T> = Mockito.any(Array<T>::class.java) ?: arrayOf() @@ -183,7 +184,7 @@ inline fun <reified T : Any?> anyArray(): Array<T> = Mockito.any(Array<T>::class @Deprecated( "Replace with mockito-kotlin. See http://go/mockito-kotlin", ReplaceWith(expression = "whenever(methodCall)", imports = ["org.mockito.kotlin.whenever"]), - level = WARNING + level = ERROR ) inline fun <T> whenever(methodCall: T): OngoingStubbing<T> = Mockito.`when`(methodCall) @@ -202,7 +203,7 @@ inline fun <T> whenever(methodCall: T): OngoingStubbing<T> = Mockito.`when`(meth @Deprecated( "Replace with mockito-kotlin. See http://go/mockito-kotlin", ReplaceWith(expression = "whenever(mock)", imports = ["org.mockito.kotlin.whenever"]), - level = WARNING + level = ERROR ) inline fun <T> Stubber.whenever(mock: T): T = `when`(mock) @@ -280,7 +281,7 @@ inline fun <reified T : Any> captureMany(block: KotlinArgumentCaptor<T>.() -> Un @Deprecated( "Replace with mockito-kotlin. See http://go/mockito-kotlin", ReplaceWith(expression = "anyOrNull()", imports = ["org.mockito.kotlin.anyOrNull"]), - level = WARNING + level = ERROR ) inline fun <reified T> anyOrNull() = ArgumentMatchers.argThat(ArgumentMatcher<T?> { true }) @@ -288,5 +289,5 @@ inline fun <reified T> anyOrNull() = ArgumentMatchers.argThat(ArgumentMatcher<T? * @see org.mockito.kotlin.mock * @see org.mockito.kotlin.doThrow */ -@Deprecated("Replace with mockito-kotlin. See http://go/mockito-kotlin", level = WARNING) +@Deprecated("Replace with mockito-kotlin. See http://go/mockito-kotlin", level = ERROR) val THROWS_EXCEPTION = Answer { error("Unstubbed behavior was accessed.") } diff --git a/tests/unit/src/com/android/intentresolver/ChooserActionFactoryTest.kt b/tests/unit/src/com/android/intentresolver/ChooserActionFactoryTest.kt index 0c2ae800..8dfbdbdd 100644 --- a/tests/unit/src/com/android/intentresolver/ChooserActionFactoryTest.kt +++ b/tests/unit/src/com/android/intentresolver/ChooserActionFactoryTest.kt @@ -42,6 +42,7 @@ import org.junit.Assert.assertTrue import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.verify diff --git a/tests/unit/src/com/android/intentresolver/ChooserListAdapterDataTest.kt b/tests/unit/src/com/android/intentresolver/ChooserListAdapterDataTest.kt index e974cb7d..df0c5e5e 100644 --- a/tests/unit/src/com/android/intentresolver/ChooserListAdapterDataTest.kt +++ b/tests/unit/src/com/android/intentresolver/ChooserListAdapterDataTest.kt @@ -31,29 +31,33 @@ import com.android.intentresolver.util.TestExecutor import com.android.internal.logging.InstanceId import com.google.common.truth.Truth.assertThat import org.junit.Test -import org.mockito.Mockito +import org.mockito.kotlin.any +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.eq +import org.mockito.kotlin.mock +import org.mockito.kotlin.whenever class ChooserListAdapterDataTest { private val layoutInflater = mock<LayoutInflater>() private val packageManager = mock<PackageManager>() - private val userManager = mock<UserManager> { whenever(isManagedProfile).thenReturn(false) } + private val userManager = mock<UserManager> { on { isManagedProfile } doReturn false } private val resources = mock<android.content.res.Resources> { - whenever(getInteger(R.integer.config_maxShortcutTargetsPerApp)).thenReturn(2) + on { getInteger(R.integer.config_maxShortcutTargetsPerApp) } doReturn 2 } private val context = mock<Context> { - whenever(getSystemService(Context.LAYOUT_INFLATER_SERVICE)).thenReturn(layoutInflater) - whenever(getSystemService(Context.USER_SERVICE)).thenReturn(userManager) - whenever(packageManager).thenReturn(this@ChooserListAdapterDataTest.packageManager) - whenever(resources).thenReturn(this@ChooserListAdapterDataTest.resources) + on { getSystemService(Context.LAYOUT_INFLATER_SERVICE) } doReturn layoutInflater + on { getSystemService(Context.USER_SERVICE) } doReturn userManager + on { packageManager } doReturn this@ChooserListAdapterDataTest.packageManager + on { resources } doReturn this@ChooserListAdapterDataTest.resources } private val targetIntent = Intent(Intent.ACTION_SEND) private val payloadIntents = listOf(targetIntent) private val resolverListController = mock<ResolverListController> { - whenever(filterIneligibleActivities(any(), Mockito.anyBoolean())).thenReturn(null) - whenever(filterLowPriority(any(), Mockito.anyBoolean())).thenReturn(null) + on { filterIneligibleActivities(any(), any()) } doReturn null + on { filterLowPriority(any(), any()) } doReturn null } private val resolverListCommunicator = FakeResolverListCommunicator() private val userHandle = UserHandle.of(UserHandle.USER_CURRENT) diff --git a/tests/unit/src/com/android/intentresolver/ChooserListAdapterTest.kt b/tests/unit/src/com/android/intentresolver/ChooserListAdapterTest.kt index 3c23ff26..bbe8a29e 100644 --- a/tests/unit/src/com/android/intentresolver/ChooserListAdapterTest.kt +++ b/tests/unit/src/com/android/intentresolver/ChooserListAdapterTest.kt @@ -39,8 +39,11 @@ import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.times -import org.mockito.Mockito.verify +import org.mockito.kotlin.any +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.times +import org.mockito.kotlin.verify @RunWith(AndroidJUnit4::class) class ChooserListAdapterTest { @@ -49,7 +52,7 @@ class ChooserListAdapterTest { private val packageManager = mock<PackageManager> { - whenever(resolveActivity(any(), any<ResolveInfoFlags>())).thenReturn(mock()) + on { resolveActivity(any(), any<ResolveInfoFlags>()) } doReturn (mock()) } private val context = InstrumentationRegistry.getInstrumentation().context private val resolverListController = mock<ResolverListController>() diff --git a/tests/unit/src/com/android/intentresolver/ChooserRefinementManagerTest.kt b/tests/unit/src/com/android/intentresolver/ChooserRefinementManagerTest.kt index 16c917b0..f5210f71 100644 --- a/tests/unit/src/com/android/intentresolver/ChooserRefinementManagerTest.kt +++ b/tests/unit/src/com/android/intentresolver/ChooserRefinementManagerTest.kt @@ -37,8 +37,11 @@ import java.util.concurrent.TimeUnit import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import org.mockito.ArgumentCaptor -import org.mockito.Mockito +import org.mockito.kotlin.any +import org.mockito.kotlin.argumentCaptor +import org.mockito.kotlin.eq +import org.mockito.kotlin.mock +import org.mockito.kotlin.verify @RunWith(AndroidJUnit4::class) @UiThreadTest @@ -95,22 +98,21 @@ class ChooserRefinementManagerTest { ) .isTrue() - val intentCaptor = ArgumentCaptor.forClass(Intent::class.java) - Mockito.verify(intentSender) - .sendIntent(any(), eq(0), intentCaptor.capture(), eq(null), eq(null)) + val intentCaptor = argumentCaptor<Intent>() + verify(intentSender).sendIntent(any(), eq(0), intentCaptor.capture(), eq(null), eq(null)) - val intent = intentCaptor.value - assertThat(intent?.getParcelableExtra(Intent.EXTRA_INTENT, Intent::class.java)) + val intent = intentCaptor.firstValue + assertThat(intent.getParcelableExtra(Intent.EXTRA_INTENT, Intent::class.java)) .isEqualTo(exampleSourceIntents[0]) val alternates = - intent?.getParcelableArrayExtra(Intent.EXTRA_ALTERNATE_INTENTS, Intent::class.java) + intent.getParcelableArrayExtra(Intent.EXTRA_ALTERNATE_INTENTS, Intent::class.java) assertThat(alternates?.size).isEqualTo(1) assertThat(alternates?.get(0)).isEqualTo(exampleSourceIntents[1]) // Complete the refinement val receiver = - intent?.getParcelableExtra(Intent.EXTRA_RESULT_RECEIVER, ResultReceiver::class.java) + intent.getParcelableExtra(Intent.EXTRA_RESULT_RECEIVER, ResultReceiver::class.java) val bundle = Bundle().apply { putParcelable(Intent.EXTRA_INTENT, exampleSourceIntents[0]) } receiver?.send(Activity.RESULT_OK, bundle) @@ -130,11 +132,10 @@ class ChooserRefinementManagerTest { ) .isTrue() - val intentCaptor = ArgumentCaptor.forClass(Intent::class.java) - Mockito.verify(intentSender) - .sendIntent(any(), eq(0), intentCaptor.capture(), eq(null), eq(null)) + val intentCaptor = argumentCaptor<Intent>() + verify(intentSender).sendIntent(any(), eq(0), intentCaptor.capture(), eq(null), eq(null)) - val intent = intentCaptor.value + val intent = intentCaptor.firstValue // Complete the refinement val receiver = diff --git a/tests/unit/src/com/android/intentresolver/chooser/ImmutableTargetInfoTest.kt b/tests/unit/src/com/android/intentresolver/chooser/ImmutableTargetInfoTest.kt index 35b3f637..4d9d4880 100644 --- a/tests/unit/src/com/android/intentresolver/chooser/ImmutableTargetInfoTest.kt +++ b/tests/unit/src/com/android/intentresolver/chooser/ImmutableTargetInfoTest.kt @@ -27,9 +27,9 @@ import androidx.test.platform.app.InstrumentationRegistry import com.android.intentresolver.ResolverActivity import com.android.intentresolver.ResolverDataProvider import com.android.intentresolver.createShortcutInfo -import com.android.intentresolver.mock import com.google.common.truth.Truth.assertThat import org.junit.Test +import org.mockito.kotlin.mock class ImmutableTargetInfoTest { private val PERSONAL_USER_HANDLE: UserHandle = @@ -223,8 +223,8 @@ class ImmutableTargetInfoTest { ImmutableTargetInfo.newBuilder().setResolvedIntent(originalIntent).build() val info = checkNotNull(originalInfo.tryToCloneWithAppliedRefinement(refinementIntent)) - assertThat(info?.baseIntentToSend?.getBooleanExtra("ORIGINAL", false)).isTrue() - assertThat(info?.baseIntentToSend?.getBooleanExtra("REFINEMENT", false)).isTrue() + assertThat(info.baseIntentToSend?.getBooleanExtra("ORIGINAL", false)).isTrue() + assertThat(info.baseIntentToSend?.getBooleanExtra("REFINEMENT", false)).isTrue() } @Test @@ -248,9 +248,9 @@ class ImmutableTargetInfoTest { val info = checkNotNull(infoWithReferrerFillIn.tryToCloneWithAppliedRefinement(refinementIntent)) - assertThat(info?.baseIntentToSend?.getPackage()).isEqualTo("original") // Set all along. - assertThat(info?.baseIntentToSend?.action).isEqualTo("REFINE_ME") // Refinement wins. - assertThat(info?.baseIntentToSend?.type).isEqualTo("test/referrer") // Left for referrer. + assertThat(info.baseIntentToSend?.getPackage()).isEqualTo("original") // Set all along. + assertThat(info.baseIntentToSend?.action).isEqualTo("REFINE_ME") // Refinement wins. + assertThat(info.baseIntentToSend?.type).isEqualTo("test/referrer") // Left for referrer. } @Test @@ -274,15 +274,15 @@ class ImmutableTargetInfoTest { val refined2 = checkNotNull(refined1.tryToCloneWithAppliedRefinement(refinementIntent2)) // Both clones get the same values filled in from the referrer intent. - assertThat(refined1?.baseIntentToSend?.getStringExtra("TEST")).isEqualTo("REFERRER") - assertThat(refined2?.baseIntentToSend?.getStringExtra("TEST")).isEqualTo("REFERRER") + assertThat(refined1.baseIntentToSend?.getStringExtra("TEST")).isEqualTo("REFERRER") + assertThat(refined2.baseIntentToSend?.getStringExtra("TEST")).isEqualTo("REFERRER") // Each clone has the respective value that was set in their own refinement request. - assertThat(refined1?.baseIntentToSend?.getStringExtra("TEST1")).isEqualTo("1") - assertThat(refined2?.baseIntentToSend?.getStringExtra("TEST2")).isEqualTo("2") + assertThat(refined1.baseIntentToSend?.getStringExtra("TEST1")).isEqualTo("1") + assertThat(refined2.baseIntentToSend?.getStringExtra("TEST2")).isEqualTo("2") // The clones don't have the data from each other's refinements, even though the intent // field is empty (thus able to be populated by filling-in). - assertThat(refined1?.baseIntentToSend?.getStringExtra("TEST2")).isNull() - assertThat(refined2?.baseIntentToSend?.getStringExtra("TEST1")).isNull() + assertThat(refined1.baseIntentToSend?.getStringExtra("TEST2")).isNull() + assertThat(refined2.baseIntentToSend?.getStringExtra("TEST1")).isNull() } @Test @@ -308,15 +308,15 @@ class ImmutableTargetInfoTest { refinement.putExtra("refinement", true) val refinedResult = checkNotNull(originalInfo.tryToCloneWithAppliedRefinement(refinement)) - assertThat(refinedResult?.baseIntentToSend?.getBooleanExtra("refinement", false)).isTrue() - assertThat(refinedResult?.baseIntentToSend?.getBooleanExtra("targetAlternate", false)) + assertThat(refinedResult.baseIntentToSend?.getBooleanExtra("refinement", false)).isTrue() + assertThat(refinedResult.baseIntentToSend?.getBooleanExtra("targetAlternate", false)) .isTrue() // None of the other source intents got merged in (not even the later one that matched): - assertThat(refinedResult?.baseIntentToSend?.getBooleanExtra("originalIntent", false)) + assertThat(refinedResult.baseIntentToSend?.getBooleanExtra("originalIntent", false)) .isFalse() - assertThat(refinedResult?.baseIntentToSend?.getBooleanExtra("mismatchedAlternate", false)) + assertThat(refinedResult.baseIntentToSend?.getBooleanExtra("mismatchedAlternate", false)) .isFalse() - assertThat(refinedResult?.baseIntentToSend?.getBooleanExtra("extraMatch", false)).isFalse() + assertThat(refinedResult.baseIntentToSend?.getBooleanExtra("extraMatch", false)).isFalse() } @Test @@ -496,7 +496,7 @@ private open class TestActivityStarter : ImmutableTargetInfo.TargetActivityStart var lastInvocationTargetInfo: TargetInfo? = null var lastInvocationActivity: Activity? = null var lastInvocationOptions: Bundle? = null - var lastInvocationUserId: Integer? = null + var lastInvocationUserId: Int? = null var lastInvocationAsCaller = false override fun startAsCaller( @@ -509,7 +509,7 @@ private open class TestActivityStarter : ImmutableTargetInfo.TargetActivityStart lastInvocationTargetInfo = target lastInvocationActivity = activity lastInvocationOptions = options - lastInvocationUserId = Integer(userId) + lastInvocationUserId = userId lastInvocationAsCaller = true return true } @@ -524,7 +524,7 @@ private open class TestActivityStarter : ImmutableTargetInfo.TargetActivityStart lastInvocationTargetInfo = target lastInvocationActivity = activity lastInvocationOptions = options - lastInvocationUserId = Integer(user.identifier) + lastInvocationUserId = user.identifier lastInvocationAsCaller = false return true } diff --git a/tests/unit/src/com/android/intentresolver/chooser/TargetInfoTest.kt b/tests/unit/src/com/android/intentresolver/chooser/TargetInfoTest.kt index b346bee5..a2f6e7a4 100644 --- a/tests/unit/src/com/android/intentresolver/chooser/TargetInfoTest.kt +++ b/tests/unit/src/com/android/intentresolver/chooser/TargetInfoTest.kt @@ -30,16 +30,16 @@ import com.android.intentresolver.ResolverDataProvider import com.android.intentresolver.ResolverDataProvider.createResolveInfo import com.android.intentresolver.createChooserTarget import com.android.intentresolver.createShortcutInfo -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test -import org.mockito.Mockito.any -import org.mockito.Mockito.never -import org.mockito.Mockito.spy -import org.mockito.Mockito.times -import org.mockito.Mockito.verify +import org.mockito.kotlin.any +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.never +import org.mockito.kotlin.spy +import org.mockito.kotlin.times +import org.mockito.kotlin.verify class TargetInfoTest { private val PERSONAL_USER_HANDLE: UserHandle = @@ -422,9 +422,7 @@ class TargetInfoTest { ) ) val targetTwo = - mock<DisplayResolveInfo> { - whenever(tryToCloneWithAppliedRefinement(any())).thenReturn(this) - } + mock<DisplayResolveInfo> { on { tryToCloneWithAppliedRefinement(any()) } doReturn mock } val multiTargetInfo = MultiDisplayResolveInfo.newMultiDisplayResolveInfo(listOf(targetOne, targetTwo)) diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt index e4489bd1..27d98ece 100644 --- a/tests/unit/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt +++ b/tests/unit/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt @@ -23,8 +23,6 @@ import android.platform.test.flag.junit.DeviceFlagsValueProvider import com.android.intentresolver.ContentTypeHint import com.android.intentresolver.FakeImageLoader import com.android.intentresolver.contentpreview.ChooserContentPreviewUi.ActionFactory -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.android.intentresolver.widget.ActionRow import com.android.intentresolver.widget.ImagePreviewView import com.google.common.truth.Truth.assertThat @@ -38,6 +36,8 @@ import org.junit.Test import org.mockito.Mockito.never import org.mockito.Mockito.times import org.mockito.Mockito.verify +import org.mockito.kotlin.mock +import org.mockito.kotlin.whenever class ChooserContentPreviewUiTest { private val testScope = TestScope(EmptyCoroutineContext + UnconfinedTestDispatcher()) diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/FileContentPreviewUiTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/FileContentPreviewUiTest.kt index 0e4e36ab..7c50fa42 100644 --- a/tests/unit/src/com/android/intentresolver/contentpreview/FileContentPreviewUiTest.kt +++ b/tests/unit/src/com/android/intentresolver/contentpreview/FileContentPreviewUiTest.kt @@ -23,13 +23,13 @@ import android.widget.TextView import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import com.android.intentresolver.R -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.android.intentresolver.widget.ActionRow import com.google.common.truth.Truth.assertThat import java.util.function.Consumer import org.junit.Test import org.junit.runner.RunWith +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock @RunWith(AndroidJUnit4::class) class FileContentPreviewUiTest { @@ -45,7 +45,7 @@ class FileContentPreviewUiTest { override fun getExcludeSharedTextAction(): Consumer<Boolean> = Consumer<Boolean> {} } private val headlineGenerator = - mock<HeadlineGenerator> { whenever(getFilesHeadline(fileCount)).thenReturn(text) } + mock<HeadlineGenerator> { on { getFilesHeadline(fileCount) } doReturn text } private val context get() = InstrumentationRegistry.getInstrumentation().context diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt index da0ddd12..1d85c61b 100644 --- a/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt +++ b/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt @@ -25,8 +25,6 @@ import androidx.annotation.IdRes import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation import com.android.intentresolver.R -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.android.intentresolver.widget.ActionRow import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertWithMessage @@ -36,10 +34,12 @@ import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.anyInt -import org.mockito.Mockito.never -import org.mockito.Mockito.times -import org.mockito.Mockito.verify +import org.mockito.kotlin.any +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.never +import org.mockito.kotlin.times +import org.mockito.kotlin.verify private const val HEADLINE_IMAGES = "Image Headline" private const val HEADLINE_VIDEOS = "Video Headline" @@ -64,9 +64,9 @@ class FilesPlusTextContentPreviewUiTest { private val imageLoader = mock<ImageLoader>() private val headlineGenerator = mock<HeadlineGenerator> { - whenever(getImagesHeadline(anyInt())).thenReturn(HEADLINE_IMAGES) - whenever(getVideosHeadline(anyInt())).thenReturn(HEADLINE_VIDEOS) - whenever(getFilesHeadline(anyInt())).thenReturn(HEADLINE_FILES) + on { getImagesHeadline(any()) } doReturn HEADLINE_IMAGES + on { getVideosHeadline(any()) } doReturn HEADLINE_VIDEOS + on { getFilesHeadline(any()) } doReturn HEADLINE_FILES } private val testMetadataText: CharSequence = "Test metadata text" diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/ImagePreviewImageLoaderTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/ImagePreviewImageLoaderTest.kt index 41989bda..3a45e2f6 100644 --- a/tests/unit/src/com/android/intentresolver/contentpreview/ImagePreviewImageLoaderTest.kt +++ b/tests/unit/src/com/android/intentresolver/contentpreview/ImagePreviewImageLoaderTest.kt @@ -20,10 +20,6 @@ import android.content.ContentResolver import android.graphics.Bitmap import android.net.Uri import android.util.Size -import com.android.intentresolver.any -import com.android.intentresolver.anyOrNull -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.google.common.truth.Truth.assertThat import java.util.ArrayDeque import java.util.concurrent.CountDownLatch @@ -52,9 +48,16 @@ import kotlinx.coroutines.test.runTest import kotlinx.coroutines.yield import org.junit.Assert.assertTrue import org.junit.Test -import org.mockito.Mockito.never -import org.mockito.Mockito.times -import org.mockito.Mockito.verify +import org.mockito.kotlin.any +import org.mockito.kotlin.anyOrNull +import org.mockito.kotlin.doAnswer +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.doThrow +import org.mockito.kotlin.mock +import org.mockito.kotlin.never +import org.mockito.kotlin.times +import org.mockito.kotlin.verify +import org.mockito.kotlin.whenever @OptIn(ExperimentalCoroutinesApi::class) class ImagePreviewImageLoaderTest { @@ -63,9 +66,7 @@ class ImagePreviewImageLoaderTest { private val uriTwo = Uri.parse("content://org.package.app/image-2.png") private val bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888) private val contentResolver = - mock<ContentResolver> { - whenever(loadThumbnail(any(), any(), anyOrNull())).thenReturn(bitmap) - } + mock<ContentResolver> { on { loadThumbnail(any(), any(), anyOrNull()) } doReturn bitmap } private val scheduler = TestCoroutineScheduler() private val dispatcher = UnconfinedTestDispatcher(scheduler) private val scope = TestScope(dispatcher) @@ -211,8 +212,8 @@ class ImagePreviewImageLoaderTest { scope.runTest { val contentResolver = mock<ContentResolver> { - whenever(loadThumbnail(any(), any(), anyOrNull())) - .thenThrow(SecurityException("test")) + on { loadThumbnail(any(), any(), anyOrNull()) } doThrow + SecurityException("test") } val acquireCount = AtomicInteger() val releaseCount = AtomicInteger() @@ -298,13 +299,16 @@ class ImagePreviewImageLoaderTest { val pendingThumbnailCalls = ArrayDeque<CountDownLatch>() val contentResolver = mock<ContentResolver> { - whenever(loadThumbnail(any(), any(), anyOrNull())).thenAnswer { - val latch = CountDownLatch(1) - synchronized(pendingThumbnailCalls) { pendingThumbnailCalls.offer(latch) } - thumbnailCallsCdl.countDown() - assertTrue("Timeout waiting thumbnail calls", latch.await(1, SECONDS)) - bitmap - } + on { loadThumbnail(any(), any(), anyOrNull()) } doAnswer + { + val latch = CountDownLatch(1) + synchronized(pendingThumbnailCalls) { + pendingThumbnailCalls.offer(latch) + } + thumbnailCallsCdl.countDown() + assertTrue("Timeout waiting thumbnail calls", latch.await(1, SECONDS)) + bitmap + } } val name = "LoadImage" val maxSimultaneousRequests = 2 diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/PreviewDataProviderTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/PreviewDataProviderTest.kt index babfaaf5..a2fb9693 100644 --- a/tests/unit/src/com/android/intentresolver/contentpreview/PreviewDataProviderTest.kt +++ b/tests/unit/src/com/android/intentresolver/contentpreview/PreviewDataProviderTest.kt @@ -24,8 +24,6 @@ import android.net.Uri import android.platform.test.flag.junit.CheckFlagsRule import android.platform.test.flag.junit.DeviceFlagsValueProvider import android.provider.DocumentsContract -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.google.common.truth.Truth.assertThat import kotlin.coroutines.EmptyCoroutineContext import kotlinx.coroutines.CoroutineScope @@ -36,10 +34,12 @@ import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test -import org.mockito.Mockito.any -import org.mockito.Mockito.never -import org.mockito.Mockito.times -import org.mockito.Mockito.verify +import org.mockito.kotlin.any +import org.mockito.kotlin.mock +import org.mockito.kotlin.never +import org.mockito.kotlin.times +import org.mockito.kotlin.verify +import org.mockito.kotlin.whenever @OptIn(ExperimentalCoroutinesApi::class) class PreviewDataProviderTest { diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/TextContentPreviewUiTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/TextContentPreviewUiTest.kt index 9a15f90a..60159160 100644 --- a/tests/unit/src/com/android/intentresolver/contentpreview/TextContentPreviewUiTest.kt +++ b/tests/unit/src/com/android/intentresolver/contentpreview/TextContentPreviewUiTest.kt @@ -24,8 +24,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import com.android.intentresolver.ContentTypeHint import com.android.intentresolver.R -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.android.intentresolver.widget.ActionRow import com.google.common.truth.Truth.assertThat import java.util.function.Consumer @@ -34,6 +32,8 @@ import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher import org.junit.Test import org.junit.runner.RunWith +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock @RunWith(AndroidJUnit4::class) class TextContentPreviewUiTest { @@ -56,8 +56,8 @@ class TextContentPreviewUiTest { private val imageLoader = mock<ImageLoader>() private val headlineGenerator = mock<HeadlineGenerator> { - whenever(getTextHeadline(text)).thenReturn(text) - whenever(getAlbumHeadline()).thenReturn(albumHeadline) + on { getTextHeadline(text) } doReturn text + on { getAlbumHeadline() } doReturn albumHeadline } private val testMetadataText: CharSequence = "Test metadata text" diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUiTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUiTest.kt index 98e6c381..21eb12ea 100644 --- a/tests/unit/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUiTest.kt +++ b/tests/unit/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUiTest.kt @@ -25,12 +25,11 @@ import androidx.annotation.IdRes import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation import com.android.intentresolver.R -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.android.intentresolver.widget.ImagePreviewView.TransitionElementStatusCallback import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertWithMessage import kotlin.coroutines.EmptyCoroutineContext +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.takeWhile @@ -39,9 +38,11 @@ import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.anyInt -import org.mockito.Mockito.times -import org.mockito.Mockito.verify +import org.mockito.kotlin.any +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.times +import org.mockito.kotlin.verify private const val IMAGE_HEADLINE = "Image Headline" private const val VIDEO_HEADLINE = "Video Headline" @@ -49,17 +50,18 @@ private const val FILES_HEADLINE = "Files Headline" @RunWith(AndroidJUnit4::class) class UnifiedContentPreviewUiTest { + @OptIn(ExperimentalCoroutinesApi::class) private val testScope = TestScope(EmptyCoroutineContext + UnconfinedTestDispatcher()) private val actionFactory = mock<ChooserContentPreviewUi.ActionFactory> { - whenever(createCustomActions()).thenReturn(emptyList()) + on { createCustomActions() } doReturn emptyList() } private val imageLoader = mock<ImageLoader>() private val headlineGenerator = mock<HeadlineGenerator> { - whenever(getImagesHeadline(anyInt())).thenReturn(IMAGE_HEADLINE) - whenever(getVideosHeadline(anyInt())).thenReturn(VIDEO_HEADLINE) - whenever(getFilesHeadline(anyInt())).thenReturn(FILES_HEADLINE) + on { getImagesHeadline(any()) } doReturn IMAGE_HEADLINE + on { getVideosHeadline(any()) } doReturn VIDEO_HEADLINE + on { getFilesHeadline(any()) } doReturn FILES_HEADLINE } private val testMetadataText: CharSequence = "Test metadata text" diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/UriMetadataReaderTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/UriMetadataReaderTest.kt index 07f3a3f2..74f1e59d 100644 --- a/tests/unit/src/com/android/intentresolver/contentpreview/UriMetadataReaderTest.kt +++ b/tests/unit/src/com/android/intentresolver/contentpreview/UriMetadataReaderTest.kt @@ -21,13 +21,13 @@ import android.database.MatrixCursor import android.media.MediaMetadata import android.net.Uri import android.provider.DocumentsContract -import com.android.intentresolver.any -import com.android.intentresolver.anyOrNull -import com.android.intentresolver.eq -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.google.common.truth.Truth.assertWithMessage import org.junit.Test +import org.mockito.kotlin.any +import org.mockito.kotlin.anyOrNull +import org.mockito.kotlin.eq +import org.mockito.kotlin.mock +import org.mockito.kotlin.whenever class UriMetadataReaderTest { private val uri = Uri.parse("content://org.pkg.app/item") diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/update/SelectionChangeCallbackImplTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/update/SelectionChangeCallbackImplTest.kt index 55b32509..91bbd151 100644 --- a/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/update/SelectionChangeCallbackImplTest.kt +++ b/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/update/SelectionChangeCallbackImplTest.kt @@ -41,14 +41,9 @@ import android.service.chooser.ChooserTarget import android.service.chooser.Flags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry -import com.android.intentresolver.any -import com.android.intentresolver.argumentCaptor -import com.android.intentresolver.capture import com.android.intentresolver.contentpreview.payloadtoggle.domain.model.ValueUpdate import com.android.intentresolver.contentpreview.payloadtoggle.domain.model.ValueUpdate.Absent import com.android.intentresolver.inject.FakeChooserServiceFlags -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.google.common.truth.Correspondence import com.google.common.truth.Correspondence.BinaryPredicate import com.google.common.truth.Truth.assertThat @@ -57,8 +52,13 @@ import java.lang.IllegalArgumentException import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.times -import org.mockito.Mockito.verify +import org.mockito.kotlin.any +import org.mockito.kotlin.argumentCaptor +import org.mockito.kotlin.capture +import org.mockito.kotlin.mock +import org.mockito.kotlin.times +import org.mockito.kotlin.verify +import org.mockito.kotlin.whenever @RunWith(AndroidJUnit4::class) class SelectionChangeCallbackImplTest { @@ -97,25 +97,24 @@ class SelectionChangeCallbackImplTest { val extraCaptor = argumentCaptor<Bundle>() verify(contentResolver, times(1)) .call( - capture(authorityCaptor), - capture(methodCaptor), - capture(argCaptor), - capture(extraCaptor) + authorityCaptor.capture(), + methodCaptor.capture(), + argCaptor.capture(), + extraCaptor.capture() ) assertWithMessage("Wrong additional content provider authority") - .that(authorityCaptor.value) + .that(authorityCaptor.firstValue) .isEqualTo(uri.authority) assertWithMessage("Wrong additional content provider #call() method name") - .that(methodCaptor.value) + .that(methodCaptor.firstValue) .isEqualTo(ON_SELECTION_CHANGED) assertWithMessage("Wrong additional content provider argument value") - .that(argCaptor.value) + .that(argCaptor.firstValue) .isEqualTo(uri.toString()) - val extraBundle = extraCaptor.value + val extraBundle = extraCaptor.firstValue assertWithMessage("Additional content provider #call() should have a non-null extras arg.") .that(extraBundle) .isNotNull() - requireNotNull(extraBundle) val argChooserIntent = extraBundle.getParcelable(EXTRA_INTENT, Intent::class.java) assertWithMessage("#call() extras arg. should contain Intent#EXTRA_INTENT") .that(argChooserIntent) diff --git a/tests/unit/src/com/android/intentresolver/emptystate/CompositeEmptyStateProviderTest.kt b/tests/unit/src/com/android/intentresolver/emptystate/CompositeEmptyStateProviderTest.kt index 4c05dfb1..084d12e6 100644 --- a/tests/unit/src/com/android/intentresolver/emptystate/CompositeEmptyStateProviderTest.kt +++ b/tests/unit/src/com/android/intentresolver/emptystate/CompositeEmptyStateProviderTest.kt @@ -17,9 +17,9 @@ package com.android.intentresolver.emptystate import com.android.intentresolver.ResolverListAdapter -import com.android.intentresolver.mock import com.google.common.truth.Truth.assertThat import org.junit.Test +import org.mockito.kotlin.mock class CompositeEmptyStateProviderTest { val listAdapter = mock<ResolverListAdapter>() diff --git a/tests/unit/src/com/android/intentresolver/profiles/MultiProfilePagerAdapterTest.kt b/tests/unit/src/com/android/intentresolver/profiles/MultiProfilePagerAdapterTest.kt index edeb5c8c..8eafa0b5 100644 --- a/tests/unit/src/com/android/intentresolver/profiles/MultiProfilePagerAdapterTest.kt +++ b/tests/unit/src/com/android/intentresolver/profiles/MultiProfilePagerAdapterTest.kt @@ -25,15 +25,15 @@ import androidx.test.platform.app.InstrumentationRegistry import com.android.intentresolver.R import com.android.intentresolver.ResolverListAdapter import com.android.intentresolver.emptystate.EmptyStateProvider -import com.android.intentresolver.mock import com.android.intentresolver.profiles.MultiProfilePagerAdapter.PROFILE_PERSONAL import com.android.intentresolver.profiles.MultiProfilePagerAdapter.PROFILE_WORK -import com.android.intentresolver.whenever import com.google.common.collect.ImmutableList import com.google.common.truth.Truth.assertThat import java.util.Optional import java.util.function.Supplier import org.junit.Test +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock class MultiProfilePagerAdapterTest { private val PERSONAL_USER_HANDLE = UserHandle.of(10) @@ -48,7 +48,7 @@ class MultiProfilePagerAdapterTest { @Test fun testSinglePageProfileAdapter() { val personalListAdapter = - mock<ResolverListAdapter> { whenever(getUserHandle()).thenReturn(PERSONAL_USER_HANDLE) } + mock<ResolverListAdapter> { on { userHandle } doReturn PERSONAL_USER_HANDLE } val pagerAdapter = MultiProfilePagerAdapter( { listAdapter: ResolverListAdapter -> listAdapter }, @@ -87,9 +87,9 @@ class MultiProfilePagerAdapterTest { @Test fun testTwoProfilePagerAdapter() { val personalListAdapter = - mock<ResolverListAdapter> { whenever(getUserHandle()).thenReturn(PERSONAL_USER_HANDLE) } + mock<ResolverListAdapter> { on { userHandle } doReturn PERSONAL_USER_HANDLE } val workListAdapter = - mock<ResolverListAdapter> { whenever(getUserHandle()).thenReturn(WORK_USER_HANDLE) } + mock<ResolverListAdapter> { on { userHandle } doReturn WORK_USER_HANDLE } val pagerAdapter = MultiProfilePagerAdapter( { listAdapter: ResolverListAdapter -> listAdapter }, @@ -134,9 +134,9 @@ class MultiProfilePagerAdapterTest { @Test fun testTwoProfilePagerAdapter_workIsDefault() { val personalListAdapter = - mock<ResolverListAdapter> { whenever(getUserHandle()).thenReturn(PERSONAL_USER_HANDLE) } + mock<ResolverListAdapter> { on { userHandle } doReturn PERSONAL_USER_HANDLE } val workListAdapter = - mock<ResolverListAdapter> { whenever(getUserHandle()).thenReturn(WORK_USER_HANDLE) } + mock<ResolverListAdapter> { on { userHandle } doReturn WORK_USER_HANDLE } val pagerAdapter = MultiProfilePagerAdapter( { listAdapter: ResolverListAdapter -> listAdapter }, @@ -179,7 +179,7 @@ class MultiProfilePagerAdapterTest { @Test fun testBottomPaddingDelegate_default() { val personalListAdapter = - mock<ResolverListAdapter> { whenever(getUserHandle()).thenReturn(PERSONAL_USER_HANDLE) } + mock<ResolverListAdapter> { on { userHandle } doReturn PERSONAL_USER_HANDLE } val pagerAdapter = MultiProfilePagerAdapter( { listAdapter: ResolverListAdapter -> listAdapter }, @@ -204,9 +204,9 @@ class MultiProfilePagerAdapterTest { { Optional.empty() } ) val container = - pagerAdapter - .getActiveEmptyStateView() - .requireViewById<View>(com.android.internal.R.id.resolver_empty_state_container) + pagerAdapter.activeEmptyStateView.requireViewById<View>( + com.android.internal.R.id.resolver_empty_state_container + ) container.setPadding(1, 2, 3, 4) pagerAdapter.setupContainerPadding() assertThat(container.paddingLeft).isEqualTo(1) @@ -218,7 +218,7 @@ class MultiProfilePagerAdapterTest { @Test fun testBottomPaddingDelegate_override() { val personalListAdapter = - mock<ResolverListAdapter> { whenever(getUserHandle()).thenReturn(PERSONAL_USER_HANDLE) } + mock<ResolverListAdapter> { on { userHandle } doReturn PERSONAL_USER_HANDLE } val pagerAdapter = MultiProfilePagerAdapter( { listAdapter: ResolverListAdapter -> listAdapter }, @@ -243,9 +243,9 @@ class MultiProfilePagerAdapterTest { { Optional.of(42) } ) val container = - pagerAdapter - .getActiveEmptyStateView() - .requireViewById<View>(com.android.internal.R.id.resolver_empty_state_container) + pagerAdapter.activeEmptyStateView.requireViewById<View>( + com.android.internal.R.id.resolver_empty_state_container + ) container.setPadding(1, 2, 3, 4) pagerAdapter.setupContainerPadding() assertThat(container.paddingLeft).isEqualTo(1) @@ -261,13 +261,13 @@ class MultiProfilePagerAdapterTest { // believe `shouldShowEmptyStateScreen` should be implemented in terms of the provider? val personalListAdapter = mock<ResolverListAdapter> { - whenever(getUserHandle()).thenReturn(PERSONAL_USER_HANDLE) - whenever(getUnfilteredCount()).thenReturn(1) + on { userHandle } doReturn PERSONAL_USER_HANDLE + on { unfilteredCount } doReturn 1 } val workListAdapter = mock<ResolverListAdapter> { - whenever(getUserHandle()).thenReturn(WORK_USER_HANDLE) - whenever(getUnfilteredCount()).thenReturn(1) + on { userHandle } doReturn WORK_USER_HANDLE + on { unfilteredCount } doReturn 1 } val pagerAdapter = MultiProfilePagerAdapter( @@ -304,13 +304,13 @@ class MultiProfilePagerAdapterTest { // believe `shouldShowEmptyStateScreen` should be implemented in terms of the provider? val personalListAdapter = mock<ResolverListAdapter> { - whenever(getUserHandle()).thenReturn(PERSONAL_USER_HANDLE) - whenever(getUnfilteredCount()).thenReturn(1) + on { userHandle } doReturn PERSONAL_USER_HANDLE + on { unfilteredCount } doReturn 1 } val workListAdapter = mock<ResolverListAdapter> { - whenever(getUserHandle()).thenReturn(WORK_USER_HANDLE) - whenever(getUnfilteredCount()).thenReturn(1) + on { userHandle } doReturn WORK_USER_HANDLE + on { unfilteredCount } doReturn 1 } val pagerAdapter = MultiProfilePagerAdapter( diff --git a/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt b/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt index 4eeae872..fbdc062b 100644 --- a/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt +++ b/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt @@ -27,15 +27,10 @@ import android.content.pm.ShortcutManager import android.os.UserHandle import android.os.UserManager import androidx.test.filters.SmallTest -import com.android.intentresolver.any -import com.android.intentresolver.argumentCaptor -import com.android.intentresolver.capture import com.android.intentresolver.chooser.DisplayResolveInfo import com.android.intentresolver.createAppTarget import com.android.intentresolver.createShareShortcutInfo import com.android.intentresolver.createShortcutInfo -import com.android.intentresolver.mock -import com.android.intentresolver.whenever import com.google.common.truth.Truth.assertWithMessage import java.util.function.Consumer import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -48,11 +43,15 @@ import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Test -import org.mockito.Mockito.anyInt -import org.mockito.Mockito.atLeastOnce -import org.mockito.Mockito.never -import org.mockito.Mockito.times -import org.mockito.Mockito.verify +import org.mockito.kotlin.any +import org.mockito.kotlin.argumentCaptor +import org.mockito.kotlin.atLeastOnce +import org.mockito.kotlin.doReturn +import org.mockito.kotlin.mock +import org.mockito.kotlin.never +import org.mockito.kotlin.times +import org.mockito.kotlin.verify +import org.mockito.kotlin.whenever @OptIn(ExperimentalCoroutinesApi::class) @SmallTest @@ -64,19 +63,19 @@ class ShortcutLoaderTest { } private val pm = mock<PackageManager> { - whenever(getApplicationInfo(any(), any<ApplicationInfoFlags>())).thenReturn(appInfo) + on { getApplicationInfo(any(), any<ApplicationInfoFlags>()) } doReturn appInfo } private val userManager = mock<UserManager> { - whenever(isUserRunning(any<UserHandle>())).thenReturn(true) - whenever(isUserUnlocked(any<UserHandle>())).thenReturn(true) - whenever(isQuietModeEnabled(any<UserHandle>())).thenReturn(false) + on { isUserRunning(any<UserHandle>()) } doReturn true + on { isUserUnlocked(any<UserHandle>()) } doReturn true + on { isQuietModeEnabled(any<UserHandle>()) } doReturn false } private val context = mock<Context> { - whenever(packageManager).thenReturn(pm) - whenever(createContextAsUser(any(), anyInt())).thenReturn(this) - whenever(getSystemService(Context.USER_SERVICE)).thenReturn(userManager) + on { packageManager } doReturn pm + on { createContextAsUser(any(), any()) } doReturn mock + on { getSystemService(Context.USER_SERVICE) } doReturn userManager } private val scheduler = TestCoroutineScheduler() private val dispatcher = UnconfinedTestDispatcher(scheduler) @@ -86,7 +85,7 @@ class ShortcutLoaderTest { private val callback = mock<Consumer<ShortcutLoader.Result>>() private val componentName = ComponentName("pkg", "Class") private val appTarget = - mock<DisplayResolveInfo> { whenever(resolvedComponentName).thenReturn(componentName) } + mock<DisplayResolveInfo> { on { resolvedComponentName } doReturn componentName } private val appTargets = arrayOf(appTarget) private val matchingShortcutInfo = createShortcutInfo("id-0", componentName, 1) @@ -119,13 +118,13 @@ class ShortcutLoaderTest { ) val appPredictorCallbackCaptor = argumentCaptor<AppPredictor.Callback>() verify(appPredictor, atLeastOnce()) - .registerPredictionUpdates(any(), capture(appPredictorCallbackCaptor)) - appPredictorCallbackCaptor.value.onTargetsAvailable(shortcuts) + .registerPredictionUpdates(any(), appPredictorCallbackCaptor.capture()) + appPredictorCallbackCaptor.firstValue.onTargetsAvailable(shortcuts) val resultCaptor = argumentCaptor<ShortcutLoader.Result>() - verify(callback, times(1)).accept(capture(resultCaptor)) + verify(callback, times(1)).accept(resultCaptor.capture()) - val result = resultCaptor.value + val result = resultCaptor.firstValue assertTrue("An app predictor result is expected", result.isFromAppPredictor) assertArrayEquals( "Wrong input app targets in the result", @@ -159,7 +158,7 @@ class ShortcutLoaderTest { ) val shortcutManager = mock<ShortcutManager> { - whenever(getShareTargets(intentFilter)).thenReturn(shortcutManagerResult) + on { getShareTargets(intentFilter) } doReturn shortcutManagerResult } whenever(context.getSystemService(Context.SHORTCUT_SERVICE)).thenReturn(shortcutManager) val testSubject = @@ -177,9 +176,9 @@ class ShortcutLoaderTest { testSubject.updateAppTargets(appTargets) val resultCaptor = argumentCaptor<ShortcutLoader.Result>() - verify(callback, times(1)).accept(capture(resultCaptor)) + verify(callback, times(1)).accept(resultCaptor.capture()) - val result = resultCaptor.value + val result = resultCaptor.firstValue assertFalse("An ShortcutManager result is expected", result.isFromAppPredictor) assertArrayEquals( "Wrong input app targets in the result", @@ -212,7 +211,7 @@ class ShortcutLoaderTest { ) val shortcutManager = mock<ShortcutManager> { - whenever(getShareTargets(intentFilter)).thenReturn(shortcutManagerResult) + on { getShareTargets(intentFilter) } doReturn (shortcutManagerResult) } whenever(context.getSystemService(Context.SHORTCUT_SERVICE)).thenReturn(shortcutManager) val testSubject = @@ -232,13 +231,13 @@ class ShortcutLoaderTest { verify(appPredictor, times(1)).requestPredictionUpdate() val appPredictorCallbackCaptor = argumentCaptor<AppPredictor.Callback>() verify(appPredictor, times(1)) - .registerPredictionUpdates(any(), capture(appPredictorCallbackCaptor)) - appPredictorCallbackCaptor.value.onTargetsAvailable(emptyList()) + .registerPredictionUpdates(any(), appPredictorCallbackCaptor.capture()) + appPredictorCallbackCaptor.firstValue.onTargetsAvailable(emptyList()) val resultCaptor = argumentCaptor<ShortcutLoader.Result>() - verify(callback, times(1)).accept(capture(resultCaptor)) + verify(callback, times(1)).accept(resultCaptor.capture()) - val result = resultCaptor.value + val result = resultCaptor.firstValue assertFalse("An ShortcutManager result is expected", result.isFromAppPredictor) assertArrayEquals( "Wrong input app targets in the result", @@ -271,7 +270,7 @@ class ShortcutLoaderTest { ) val shortcutManager = mock<ShortcutManager> { - whenever(getShareTargets(intentFilter)).thenReturn(shortcutManagerResult) + on { getShareTargets(intentFilter) } doReturn shortcutManagerResult } whenever(context.getSystemService(Context.SHORTCUT_SERVICE)).thenReturn(shortcutManager) whenever(appPredictor.requestPredictionUpdate()) @@ -293,9 +292,9 @@ class ShortcutLoaderTest { verify(appPredictor, times(1)).requestPredictionUpdate() val resultCaptor = argumentCaptor<ShortcutLoader.Result>() - verify(callback, times(1)).accept(capture(resultCaptor)) + verify(callback, times(1)).accept(resultCaptor.capture()) - val result = resultCaptor.value + val result = resultCaptor.firstValue assertFalse("An ShortcutManager result is expected", result.isFromAppPredictor) assertArrayEquals( "Wrong input app targets in the result", @@ -346,7 +345,7 @@ class ShortcutLoaderTest { ) val shortcutManager = mock<ShortcutManager> { - whenever(getShareTargets(intentFilter)).thenReturn(shortcutManagerResult) + on { getShareTargets(intentFilter) } doReturn shortcutManagerResult } whenever(context.getSystemService(Context.SHORTCUT_SERVICE)).thenReturn(shortcutManager) val testSubject = @@ -417,14 +416,14 @@ class ShortcutLoaderTest { verify(appPredictor, times(1)).requestPredictionUpdate() val appPredictorCallbackCaptor = argumentCaptor<AppPredictor.Callback>() verify(appPredictor, times(1)) - .registerPredictionUpdates(any(), capture(appPredictorCallbackCaptor)) - appPredictorCallbackCaptor.value.onTargetsAvailable(emptyList()) + .registerPredictionUpdates(any(), appPredictorCallbackCaptor.capture()) + appPredictorCallbackCaptor.firstValue.onTargetsAvailable(emptyList()) verify(shortcutManager, never()).getShareTargets(any()) val resultCaptor = argumentCaptor<ShortcutLoader.Result>() - verify(callback, times(1)).accept(capture(resultCaptor)) + verify(callback, times(1)).accept(resultCaptor.capture()) - val result = resultCaptor.value + val result = resultCaptor.firstValue assertWithMessage("A ShortcutManager result is expected") .that(result.isFromAppPredictor) .isFalse() |