Merge "Revert "add more unit tests for WorkspaceItemProcessor"" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
7b9f1893b8
@@ -25,30 +25,22 @@ import android.content.pm.PackageInstaller
|
||||
import android.content.pm.ShortcutInfo
|
||||
import android.os.UserHandle
|
||||
import android.util.LongSparseArray
|
||||
import com.android.dx.mockito.inline.extended.ExtendedMockito
|
||||
import com.android.launcher3.LauncherAppState
|
||||
import com.android.launcher3.LauncherSettings.Favorites
|
||||
import com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP
|
||||
import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION
|
||||
import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET
|
||||
import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT
|
||||
import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_FOLDER
|
||||
import com.android.launcher3.Utilities
|
||||
import com.android.launcher3.Utilities.EMPTY_PERSON_ARRAY
|
||||
import com.android.launcher3.backuprestore.LauncherRestoreEventLogger
|
||||
import com.android.launcher3.backuprestore.LauncherRestoreEventLogger.RestoreError.Companion.MISSING_INFO
|
||||
import com.android.launcher3.backuprestore.LauncherRestoreEventLogger.RestoreError.Companion.PROFILE_DELETED
|
||||
import com.android.launcher3.model.data.FolderInfo
|
||||
import com.android.launcher3.model.data.IconRequestInfo
|
||||
import com.android.launcher3.model.data.ItemInfo
|
||||
import com.android.launcher3.model.data.LauncherAppWidgetInfo.FLAG_DIRECT_CONFIG
|
||||
import com.android.launcher3.model.data.LauncherAppWidgetInfo.FLAG_UI_NOT_READY
|
||||
import com.android.launcher3.model.data.WorkspaceItemInfo
|
||||
import com.android.launcher3.shortcuts.ShortcutKey
|
||||
import com.android.launcher3.util.ComponentKey
|
||||
import com.android.launcher3.util.PackageManagerHelper
|
||||
import com.android.launcher3.util.PackageUserKey
|
||||
import com.android.launcher3.widget.LauncherAppWidgetProviderInfo
|
||||
import com.android.launcher3.widget.WidgetInflater
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import com.google.common.truth.Truth.assertWithMessage
|
||||
@@ -79,30 +71,28 @@ class WorkspaceItemProcessorTest {
|
||||
@Mock private lateinit var mockUserManagerState: UserManagerState
|
||||
@Mock private lateinit var mockWidgetInflater: WidgetInflater
|
||||
|
||||
private var mUserHandle: UserHandle = UserHandle(0)
|
||||
private var mIconRequestInfos: MutableList<IconRequestInfo<WorkspaceItemInfo>> = mutableListOf()
|
||||
private var mComponentName: ComponentName = ComponentName("package", "class")
|
||||
private var mUnlockedUsersArray: LongSparseArray<Boolean> = LongSparseArray()
|
||||
private var mKeyToPinnedShortcutsMap: MutableMap<ShortcutKey, ShortcutInfo> = mutableMapOf()
|
||||
private var mInstallingPkgs: HashMap<PackageUserKey, PackageInstaller.SessionInfo> = hashMapOf()
|
||||
private var mAllDeepShortcuts: MutableList<ShortcutInfo> = mutableListOf()
|
||||
private var mWidgetProvidersMap: MutableMap<ComponentKey, AppWidgetProviderInfo?> =
|
||||
mutableMapOf()
|
||||
private var mPendingPackages: MutableSet<PackageUserKey> = mutableSetOf()
|
||||
private lateinit var userHandle: UserHandle
|
||||
private lateinit var iconRequestInfos: MutableList<IconRequestInfo<WorkspaceItemInfo>>
|
||||
private lateinit var componentName: ComponentName
|
||||
private lateinit var unlockedUsersArray: LongSparseArray<Boolean>
|
||||
private lateinit var keyToPinnedShortcutsMap: MutableMap<ShortcutKey, ShortcutInfo>
|
||||
private lateinit var installingPkgs: HashMap<PackageUserKey, PackageInstaller.SessionInfo>
|
||||
private lateinit var allDeepShortcuts: MutableList<ShortcutInfo>
|
||||
|
||||
private lateinit var itemProcessorUnderTest: WorkspaceItemProcessor
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
mUserHandle = UserHandle(0)
|
||||
userHandle = UserHandle(0)
|
||||
mockIconRequestInfo = mock<IconRequestInfo<WorkspaceItemInfo>>()
|
||||
iconRequestInfos = mutableListOf(mockIconRequestInfo)
|
||||
mockWorkspaceInfo = mock<WorkspaceItemInfo>()
|
||||
mockBgDataModel = mock<BgDataModel>()
|
||||
mComponentName = ComponentName("package", "class")
|
||||
mUnlockedUsersArray = LongSparseArray<Boolean>(1).apply { put(101, true) }
|
||||
componentName = ComponentName("package", "class")
|
||||
unlockedUsersArray = LongSparseArray<Boolean>(1).apply { put(101, true) }
|
||||
mockIntent =
|
||||
mock<Intent>().apply {
|
||||
whenever(component).thenReturn(mComponentName)
|
||||
whenever(component).thenReturn(componentName)
|
||||
whenever(`package`).thenReturn("pkg")
|
||||
whenever(getStringExtra(ShortcutKey.EXTRA_SHORTCUT_ID)).thenReturn("")
|
||||
}
|
||||
@@ -119,17 +109,17 @@ class WorkspaceItemProcessorTest {
|
||||
}
|
||||
mockPmHelper =
|
||||
mock<PackageManagerHelper>().apply {
|
||||
whenever(getAppLaunchIntent(mComponentName.packageName, mUserHandle))
|
||||
whenever(getAppLaunchIntent(componentName.packageName, userHandle))
|
||||
.thenReturn(mockIntent)
|
||||
}
|
||||
mockLauncherApps =
|
||||
mock<LauncherApps>().apply {
|
||||
whenever(isPackageEnabled("package", mUserHandle)).thenReturn(true)
|
||||
whenever(isActivityEnabled(mComponentName, mUserHandle)).thenReturn(true)
|
||||
whenever(isPackageEnabled("package", userHandle)).thenReturn(true)
|
||||
whenever(isActivityEnabled(componentName, userHandle)).thenReturn(true)
|
||||
}
|
||||
mockCursor =
|
||||
mock(LoaderCursor::class.java, RETURNS_DEEP_STUBS).apply {
|
||||
user = mUserHandle
|
||||
user = userHandle
|
||||
itemType = ITEM_TYPE_APPLICATION
|
||||
id = 1
|
||||
restoreFlag = 1
|
||||
@@ -144,12 +134,9 @@ class WorkspaceItemProcessorTest {
|
||||
}
|
||||
mockUserManagerState = mock<UserManagerState>()
|
||||
mockWidgetInflater = mock<WidgetInflater>()
|
||||
mKeyToPinnedShortcutsMap = mutableMapOf()
|
||||
mInstallingPkgs = hashMapOf()
|
||||
mAllDeepShortcuts = mutableListOf()
|
||||
mWidgetProvidersMap = mutableMapOf()
|
||||
mIconRequestInfos = mutableListOf()
|
||||
mPendingPackages = mutableSetOf()
|
||||
keyToPinnedShortcutsMap = mutableMapOf()
|
||||
installingPkgs = hashMapOf()
|
||||
allDeepShortcuts = mutableListOf()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -162,18 +149,18 @@ class WorkspaceItemProcessorTest {
|
||||
memoryLogger: LoaderMemoryLogger? = null,
|
||||
userManagerState: UserManagerState = mockUserManagerState,
|
||||
launcherApps: LauncherApps = mockLauncherApps,
|
||||
shortcutKeyToPinnedShortcuts: Map<ShortcutKey, ShortcutInfo> = mKeyToPinnedShortcutsMap,
|
||||
shortcutKeyToPinnedShortcuts: Map<ShortcutKey, ShortcutInfo> = keyToPinnedShortcutsMap,
|
||||
app: LauncherAppState = mockAppState,
|
||||
bgDataModel: BgDataModel = mockBgDataModel,
|
||||
widgetProvidersMap: MutableMap<ComponentKey, AppWidgetProviderInfo?> = mWidgetProvidersMap,
|
||||
widgetProvidersMap: MutableMap<ComponentKey, AppWidgetProviderInfo?> = mutableMapOf(),
|
||||
widgetInflater: WidgetInflater = mockWidgetInflater,
|
||||
pmHelper: PackageManagerHelper = mockPmHelper,
|
||||
iconRequestInfos: MutableList<IconRequestInfo<WorkspaceItemInfo>> = mIconRequestInfos,
|
||||
iconRequestInfos: MutableList<IconRequestInfo<WorkspaceItemInfo>> = mutableListOf(),
|
||||
isSdCardReady: Boolean = false,
|
||||
pendingPackages: MutableSet<PackageUserKey> = mPendingPackages,
|
||||
unlockedUsers: LongSparseArray<Boolean> = mUnlockedUsersArray,
|
||||
installingPkgs: HashMap<PackageUserKey, PackageInstaller.SessionInfo> = mInstallingPkgs,
|
||||
allDeepShortcuts: MutableList<ShortcutInfo> = mAllDeepShortcuts
|
||||
pendingPackages: MutableSet<PackageUserKey> = mutableSetOf(),
|
||||
unlockedUsers: LongSparseArray<Boolean> = unlockedUsersArray,
|
||||
installingPkgs: HashMap<PackageUserKey, PackageInstaller.SessionInfo> = hashMapOf(),
|
||||
allDeepShortcuts: MutableList<ShortcutInfo> = mutableListOf()
|
||||
) =
|
||||
WorkspaceItemProcessor(
|
||||
c = cursor,
|
||||
@@ -240,8 +227,8 @@ class WorkspaceItemProcessorTest {
|
||||
fun `When app has empty String target package then mark deleted`() {
|
||||
|
||||
// Given
|
||||
mComponentName = ComponentName("", "")
|
||||
whenever(mockIntent.component).thenReturn(mComponentName)
|
||||
componentName = ComponentName("", "")
|
||||
whenever(mockIntent.component).thenReturn(componentName)
|
||||
whenever(mockCursor.parseIntent()).thenReturn(mockIntent)
|
||||
itemProcessorUnderTest = createWorkspaceItemProcessorUnderTest()
|
||||
|
||||
@@ -268,7 +255,7 @@ class WorkspaceItemProcessorTest {
|
||||
.isEqualTo(0)
|
||||
// currently gets marked restored twice, although markRestore() has check for restoreFlag
|
||||
verify(mockCursor, times(2)).markRestored()
|
||||
assertThat(mIconRequestInfos).containsExactly(mockIconRequestInfo)
|
||||
assertThat(iconRequestInfos).containsExactly(mockIconRequestInfo)
|
||||
verify(mockCursor).checkAndAddItem(mockWorkspaceInfo, mockBgDataModel, null)
|
||||
}
|
||||
|
||||
@@ -278,12 +265,12 @@ class WorkspaceItemProcessorTest {
|
||||
// Given
|
||||
mockLauncherApps =
|
||||
mock<LauncherApps>().apply {
|
||||
whenever(isPackageEnabled("package", mUserHandle)).thenReturn(true)
|
||||
whenever(isActivityEnabled(mComponentName, mUserHandle)).thenReturn(false)
|
||||
whenever(isPackageEnabled("package", userHandle)).thenReturn(true)
|
||||
whenever(isActivityEnabled(componentName, userHandle)).thenReturn(false)
|
||||
}
|
||||
mockPmHelper =
|
||||
mock<PackageManagerHelper>().apply {
|
||||
whenever(getAppLaunchIntent(mComponentName.packageName, mUserHandle))
|
||||
whenever(getAppLaunchIntent(componentName.packageName, userHandle))
|
||||
.thenReturn(mockIntent)
|
||||
}
|
||||
itemProcessorUnderTest = createWorkspaceItemProcessorUnderTest()
|
||||
@@ -296,7 +283,7 @@ class WorkspaceItemProcessorTest {
|
||||
.that(mockCursor.restoreFlag)
|
||||
.isEqualTo(0)
|
||||
verify(mockCursor.updater().put(Favorites.INTENT, mockIntent.toUri(0))).commit()
|
||||
assertThat(mIconRequestInfos).containsExactly(mockIconRequestInfo)
|
||||
assertThat(iconRequestInfos).containsExactly(mockIconRequestInfo)
|
||||
verify(mockCursor).checkAndAddItem(mockWorkspaceInfo, mockBgDataModel, null)
|
||||
}
|
||||
|
||||
@@ -306,13 +293,12 @@ class WorkspaceItemProcessorTest {
|
||||
// Given
|
||||
mockLauncherApps =
|
||||
mock<LauncherApps>().apply {
|
||||
whenever(isPackageEnabled("package", mUserHandle)).thenReturn(true)
|
||||
whenever(isActivityEnabled(mComponentName, mUserHandle)).thenReturn(false)
|
||||
whenever(isPackageEnabled("package", userHandle)).thenReturn(true)
|
||||
whenever(isActivityEnabled(componentName, userHandle)).thenReturn(false)
|
||||
}
|
||||
mockPmHelper =
|
||||
mock<PackageManagerHelper>().apply {
|
||||
whenever(getAppLaunchIntent(mComponentName.packageName, mUserHandle))
|
||||
.thenReturn(null)
|
||||
whenever(getAppLaunchIntent(componentName.packageName, userHandle)).thenReturn(null)
|
||||
}
|
||||
itemProcessorUnderTest = createWorkspaceItemProcessorUnderTest()
|
||||
|
||||
@@ -351,9 +337,10 @@ class WorkspaceItemProcessorTest {
|
||||
whenever(persons).thenReturn(EMPTY_PERSON_ARRAY)
|
||||
}
|
||||
val shortcutKey = ShortcutKey.fromIntent(mockIntent, mockCursor.user)
|
||||
mKeyToPinnedShortcutsMap[shortcutKey] = expectedShortcutInfo
|
||||
keyToPinnedShortcutsMap[shortcutKey] = expectedShortcutInfo
|
||||
iconRequestInfos = mutableListOf()
|
||||
itemProcessorUnderTest =
|
||||
createWorkspaceItemProcessorUnderTest(allDeepShortcuts = mAllDeepShortcuts)
|
||||
createWorkspaceItemProcessorUnderTest(allDeepShortcuts = allDeepShortcuts)
|
||||
|
||||
// When
|
||||
itemProcessorUnderTest.processItem()
|
||||
@@ -362,8 +349,8 @@ class WorkspaceItemProcessorTest {
|
||||
assertWithMessage("item restoreFlag should be set to 0")
|
||||
.that(mockCursor.restoreFlag)
|
||||
.isEqualTo(0)
|
||||
assertThat(mIconRequestInfos).isEmpty()
|
||||
assertThat(mAllDeepShortcuts).containsExactly(expectedShortcutInfo)
|
||||
assertThat(iconRequestInfos).isEmpty()
|
||||
assertThat(allDeepShortcuts).containsExactly(expectedShortcutInfo)
|
||||
verify(mockCursor).markRestored()
|
||||
verify(mockCursor).checkAndAddItem(any(), any(), anyOrNull())
|
||||
}
|
||||
@@ -373,6 +360,8 @@ class WorkspaceItemProcessorTest {
|
||||
|
||||
// Given
|
||||
mockCursor.itemType = ITEM_TYPE_DEEP_SHORTCUT
|
||||
iconRequestInfos = mutableListOf()
|
||||
keyToPinnedShortcutsMap = hashMapOf()
|
||||
itemProcessorUnderTest = createWorkspaceItemProcessorUnderTest()
|
||||
|
||||
// When
|
||||
@@ -382,7 +371,7 @@ class WorkspaceItemProcessorTest {
|
||||
assertWithMessage("item restoreFlag should be set to 0")
|
||||
.that(mockCursor.restoreFlag)
|
||||
.isEqualTo(0)
|
||||
assertThat(mIconRequestInfos).isEmpty()
|
||||
assertThat(iconRequestInfos).isEmpty()
|
||||
verify(mockCursor, times(0)).checkAndAddItem(any(), any(), anyOrNull())
|
||||
verify(mockCursor)
|
||||
.markDeleted(
|
||||
@@ -438,189 +427,4 @@ class WorkspaceItemProcessorTest {
|
||||
assertThat(actualFolderInfo.options).isEqualTo(expectedFolderInfo.options)
|
||||
verify(mockCursor).checkAndAddItem(actualFolderInfo, mockBgDataModel, null)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `When valid Widget then checkAndAddItem`() {
|
||||
|
||||
// Given
|
||||
mockCursor =
|
||||
mock<LoaderCursor>().apply {
|
||||
itemType = ITEM_TYPE_APPWIDGET
|
||||
id = 1
|
||||
user = UserHandle(1)
|
||||
restoreFlag = FLAG_DIRECT_CONFIG
|
||||
container = CONTAINER_DESKTOP
|
||||
whenever(isOnWorkspaceOrHotseat).thenCallRealMethod()
|
||||
whenever(appWidgetProvider)
|
||||
.thenReturn("com.google.android.testApp/com.android.testApp.testAppProvider")
|
||||
whenever(appWidgetId).thenReturn(0)
|
||||
whenever(spanX).thenReturn(2)
|
||||
whenever(spanY).thenReturn(1)
|
||||
whenever(options).thenReturn(0)
|
||||
whenever(appWidgetSource).thenReturn(20)
|
||||
whenever(applyCommonProperties(any())).thenCallRealMethod()
|
||||
}
|
||||
val mockProviderInfo =
|
||||
mock<LauncherAppWidgetProviderInfo>().apply {
|
||||
provider = mock()
|
||||
whenever(user).thenReturn(UserHandle(1))
|
||||
}
|
||||
val inflationResult =
|
||||
WidgetInflater.InflationResult(
|
||||
type = WidgetInflater.TYPE_REAL,
|
||||
widgetInfo = mockProviderInfo
|
||||
)
|
||||
mockWidgetInflater =
|
||||
mock<WidgetInflater>().apply {
|
||||
whenever(inflateAppWidget(any())).thenReturn(inflationResult)
|
||||
}
|
||||
itemProcessorUnderTest =
|
||||
createWorkspaceItemProcessorUnderTest(widgetProvidersMap = mWidgetProvidersMap)
|
||||
|
||||
// When
|
||||
itemProcessorUnderTest.processItem()
|
||||
|
||||
// Then
|
||||
assertThat(
|
||||
mWidgetProvidersMap[ComponentKey(mockProviderInfo.provider, mockProviderInfo.user)]
|
||||
)
|
||||
.isEqualTo(inflationResult.widgetInfo)
|
||||
verify(mockCursor).checkAndAddItem(any(), any())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `When valid Pending Widget then checkAndAddItem`() {
|
||||
|
||||
// Given
|
||||
mockCursor =
|
||||
mock<LoaderCursor>().apply {
|
||||
itemType = ITEM_TYPE_APPWIDGET
|
||||
id = 1
|
||||
user = UserHandle(1)
|
||||
restoreFlag = FLAG_UI_NOT_READY
|
||||
container = CONTAINER_DESKTOP
|
||||
whenever(isOnWorkspaceOrHotseat).thenCallRealMethod()
|
||||
whenever(appWidgetProvider)
|
||||
.thenReturn("com.google.android.testApp/com.android.testApp.testAppProvider")
|
||||
whenever(appWidgetId).thenReturn(0)
|
||||
whenever(spanX).thenReturn(2)
|
||||
whenever(spanY).thenReturn(1)
|
||||
whenever(options).thenReturn(0)
|
||||
whenever(appWidgetSource).thenReturn(20)
|
||||
whenever(applyCommonProperties(any())).thenCallRealMethod()
|
||||
}
|
||||
val mockProviderInfo =
|
||||
mock<LauncherAppWidgetProviderInfo>().apply {
|
||||
provider = mock()
|
||||
whenever(user).thenReturn(UserHandle(1))
|
||||
}
|
||||
val inflationResult =
|
||||
WidgetInflater.InflationResult(
|
||||
type = WidgetInflater.TYPE_PENDING,
|
||||
widgetInfo = mockProviderInfo
|
||||
)
|
||||
mockWidgetInflater =
|
||||
mock<WidgetInflater>().apply {
|
||||
whenever(inflateAppWidget(any())).thenReturn(inflationResult)
|
||||
}
|
||||
itemProcessorUnderTest =
|
||||
createWorkspaceItemProcessorUnderTest(widgetProvidersMap = mWidgetProvidersMap)
|
||||
|
||||
// When
|
||||
itemProcessorUnderTest.processItem()
|
||||
|
||||
// Then
|
||||
verify(mockCursor).checkAndAddItem(any(), any())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `When Unrestored Pending App Widget then mark deleted`() {
|
||||
|
||||
// Given
|
||||
val expectedProvider = "com.google.android.testApp/com.android.testApp.testAppProvider"
|
||||
mockCursor =
|
||||
mock<LoaderCursor>().apply {
|
||||
itemType = ITEM_TYPE_APPWIDGET
|
||||
id = 1
|
||||
user = UserHandle(1)
|
||||
restoreFlag = FLAG_UI_NOT_READY
|
||||
container = CONTAINER_DESKTOP
|
||||
whenever(isOnWorkspaceOrHotseat).thenCallRealMethod()
|
||||
whenever(appWidgetProvider).thenReturn(expectedProvider)
|
||||
whenever(appWidgetId).thenReturn(0)
|
||||
whenever(spanX).thenReturn(2)
|
||||
whenever(spanY).thenReturn(1)
|
||||
whenever(options).thenReturn(0)
|
||||
whenever(appWidgetSource).thenReturn(20)
|
||||
whenever(applyCommonProperties(any())).thenCallRealMethod()
|
||||
}
|
||||
mInstallingPkgs = hashMapOf()
|
||||
val inflationResult =
|
||||
WidgetInflater.InflationResult(type = WidgetInflater.TYPE_PENDING, widgetInfo = null)
|
||||
mockWidgetInflater =
|
||||
mock<WidgetInflater>().apply {
|
||||
whenever(inflateAppWidget(any())).thenReturn(inflationResult)
|
||||
}
|
||||
itemProcessorUnderTest =
|
||||
createWorkspaceItemProcessorUnderTest(widgetProvidersMap = mWidgetProvidersMap)
|
||||
val expectedComponentName = ComponentName.unflattenFromString(expectedProvider)
|
||||
|
||||
// When
|
||||
itemProcessorUnderTest.processItem()
|
||||
|
||||
// Then
|
||||
verify(mockCursor)
|
||||
.markDeleted(
|
||||
"Unrestored widget removed: $expectedComponentName",
|
||||
LauncherRestoreEventLogger.RestoreError.APP_NOT_INSTALLED
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `When Archived Pending App Widget then checkAndAddItem`() {
|
||||
|
||||
// Given
|
||||
val expectedProvider = "com.google.android.testApp/com.android.testApp.testAppProvider"
|
||||
val expectedComponentName = ComponentName.unflattenFromString(expectedProvider)
|
||||
val expectedPackage = expectedComponentName!!.packageName
|
||||
val mockitoSession =
|
||||
ExtendedMockito.mockitoSession().mockStatic(Utilities::class.java).startMocking()
|
||||
whenever(Utilities.enableSupportForArchiving()).thenReturn(true)
|
||||
mockPmHelper =
|
||||
mock<PackageManagerHelper>().apply {
|
||||
whenever(isAppArchived(expectedPackage)).thenReturn(true)
|
||||
}
|
||||
mockCursor =
|
||||
mock<LoaderCursor>().apply {
|
||||
itemType = ITEM_TYPE_APPWIDGET
|
||||
id = 1
|
||||
user = UserHandle(1)
|
||||
restoreFlag = FLAG_UI_NOT_READY
|
||||
container = CONTAINER_DESKTOP
|
||||
whenever(isOnWorkspaceOrHotseat).thenCallRealMethod()
|
||||
whenever(appWidgetProvider).thenReturn(expectedProvider)
|
||||
whenever(appWidgetId).thenReturn(0)
|
||||
whenever(spanX).thenReturn(2)
|
||||
whenever(spanY).thenReturn(1)
|
||||
whenever(options).thenReturn(0)
|
||||
whenever(appWidgetSource).thenReturn(20)
|
||||
whenever(applyCommonProperties(any())).thenCallRealMethod()
|
||||
}
|
||||
mInstallingPkgs = hashMapOf()
|
||||
val inflationResult =
|
||||
WidgetInflater.InflationResult(type = WidgetInflater.TYPE_PENDING, widgetInfo = null)
|
||||
mockWidgetInflater =
|
||||
mock<WidgetInflater>().apply {
|
||||
whenever(inflateAppWidget(any())).thenReturn(inflationResult)
|
||||
}
|
||||
itemProcessorUnderTest =
|
||||
createWorkspaceItemProcessorUnderTest(widgetProvidersMap = mWidgetProvidersMap)
|
||||
|
||||
// When
|
||||
itemProcessorUnderTest.processItem()
|
||||
|
||||
// Then
|
||||
mockitoSession.finishMocking()
|
||||
verify(mockCursor).checkAndAddItem(any(), any())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user