Making various model objects injectable
Bug: 361850561 Test: Updated tests Flag: EXEMPT dagger Change-Id: Ibb45b72c186e6aeeed7a37b0ae3f8083472019d7
This commit is contained in:
@@ -33,7 +33,6 @@ import org.mockito.Mockito.times
|
||||
import org.mockito.kotlin.any
|
||||
import org.mockito.kotlin.eq
|
||||
import org.mockito.kotlin.mock
|
||||
import org.mockito.kotlin.same
|
||||
import org.mockito.kotlin.verify
|
||||
import org.mockito.kotlin.verifyNoMoreInteractions
|
||||
import org.mockito.kotlin.whenever
|
||||
@@ -142,10 +141,9 @@ class AddWorkspaceItemsTaskTest : AbstractWorkspaceModelTest() {
|
||||
/** Sets up the item space data that will be returned from WorkspaceItemSpaceFinder. */
|
||||
private fun givenNewItemSpaces(vararg newItemSpaces: NewItemSpace) {
|
||||
val spaceStack = newItemSpaces.toMutableList()
|
||||
whenever(
|
||||
mWorkspaceItemSpaceFinder.findSpaceForItem(any(), any(), any(), any(), any(), any())
|
||||
)
|
||||
.then { spaceStack.removeFirst().toIntArray() }
|
||||
whenever(mWorkspaceItemSpaceFinder.findSpaceForItem(any(), any(), any(), any())).then {
|
||||
spaceStack.removeFirst().toIntArray()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -155,8 +153,6 @@ class AddWorkspaceItemsTaskTest : AbstractWorkspaceModelTest() {
|
||||
private fun verifyItemSpaceFinderCall(nonEmptyScreenIds: List<Int>, numberOfExpectedCall: Int) {
|
||||
verify(mWorkspaceItemSpaceFinder, times(numberOfExpectedCall))
|
||||
.findSpaceForItem(
|
||||
eq(mAppState),
|
||||
same(mModelHelper.bgDataModel),
|
||||
eq(IntArray.wrap(*nonEmptyScreenIds.toIntArray())),
|
||||
eq(IntArray()),
|
||||
eq(1),
|
||||
|
||||
@@ -55,7 +55,6 @@ import static junit.framework.Assert.assertNull;
|
||||
import static junit.framework.Assert.assertTrue;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.database.MatrixCursor;
|
||||
import android.graphics.Bitmap;
|
||||
@@ -76,6 +75,7 @@ import com.android.launcher3.model.data.ItemInfo;
|
||||
import com.android.launcher3.model.data.WorkspaceItemInfo;
|
||||
import com.android.launcher3.util.Executors;
|
||||
import com.android.launcher3.util.LauncherModelHelper;
|
||||
import com.android.launcher3.util.LauncherModelHelper.SandboxModelContext;
|
||||
import com.android.launcher3.util.PackageManagerHelper;
|
||||
|
||||
import org.junit.After;
|
||||
@@ -96,11 +96,10 @@ public class LoaderCursorTest {
|
||||
|
||||
private LauncherModelHelper mModelHelper;
|
||||
private LauncherAppState mApp;
|
||||
private PackageManagerHelper mPmHelper;
|
||||
|
||||
private MatrixCursor mCursor;
|
||||
private InvariantDeviceProfile mIDP;
|
||||
private Context mContext;
|
||||
private SandboxModelContext mContext;
|
||||
|
||||
private LoaderCursor mLoaderCursor;
|
||||
|
||||
@@ -116,7 +115,6 @@ public class LoaderCursorTest {
|
||||
mContext = mModelHelper.sandboxContext;
|
||||
mIDP = InvariantDeviceProfile.INSTANCE.get(mContext);
|
||||
mApp = LauncherAppState.getInstance(mContext);
|
||||
mPmHelper = PackageManagerHelper.INSTANCE.get(mContext);
|
||||
|
||||
mCursor = new MatrixCursor(new String[] {
|
||||
ICON, TITLE, _ID, CONTAINER, ITEM_TYPE,
|
||||
@@ -126,7 +124,8 @@ public class LoaderCursorTest {
|
||||
});
|
||||
|
||||
UserManagerState ums = new UserManagerState();
|
||||
mLoaderCursor = new LoaderCursor(mCursor, mApp, ums, mPmHelper, null);
|
||||
mLoaderCursor = mContext.getAppComponent().getLoaderCursorFactory()
|
||||
.createLoaderCursor(mCursor, ums, null);
|
||||
ums.allUsers.put(0, Process.myUserHandle());
|
||||
}
|
||||
|
||||
|
||||
@@ -27,8 +27,9 @@ import android.platform.test.flag.junit.SetFlagsRule
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.android.launcher3.AppFilter
|
||||
import com.android.launcher3.Flags.FLAG_ENABLE_PRIVATE_SPACE
|
||||
import com.android.launcher3.LauncherAppState
|
||||
import com.android.launcher3.LauncherSettings
|
||||
import com.android.launcher3.dagger.LauncherAppComponent
|
||||
import com.android.launcher3.dagger.LauncherAppSingleton
|
||||
import com.android.launcher3.icons.IconCache
|
||||
import com.android.launcher3.model.PackageUpdatedTask.OP_ADD
|
||||
import com.android.launcher3.model.PackageUpdatedTask.OP_REMOVE
|
||||
@@ -39,17 +40,20 @@ import com.android.launcher3.model.PackageUpdatedTask.OP_UPDATE
|
||||
import com.android.launcher3.model.PackageUpdatedTask.OP_USER_AVAILABILITY_CHANGE
|
||||
import com.android.launcher3.model.data.AppInfo
|
||||
import com.android.launcher3.model.data.WorkspaceItemInfo
|
||||
import com.android.launcher3.util.AllModulesForTest
|
||||
import com.android.launcher3.util.Executors
|
||||
import com.android.launcher3.util.LauncherModelHelper
|
||||
import com.android.launcher3.util.LauncherModelHelper.SandboxModelContext
|
||||
import com.android.launcher3.util.TestUtil
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import dagger.BindsInstance
|
||||
import dagger.Component
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.kotlin.any
|
||||
import org.mockito.kotlin.doAnswer
|
||||
import org.mockito.kotlin.mock
|
||||
import org.mockito.kotlin.spy
|
||||
import org.mockito.kotlin.verify
|
||||
@@ -61,10 +65,8 @@ class PackageUpdatedTaskTest {
|
||||
@get:Rule val setFlagsRule = SetFlagsRule()
|
||||
|
||||
private val mUser = myUserHandle()
|
||||
private val mDataModel: BgDataModel = BgDataModel()
|
||||
private val mLauncherModelHelper = LauncherModelHelper()
|
||||
private val mContext: SandboxModelContext = spy(mLauncherModelHelper.sandboxContext)
|
||||
private val mAppState: LauncherAppState = spy(LauncherAppState.getInstance(mContext))
|
||||
private val mContext = mLauncherModelHelper.sandboxContext
|
||||
|
||||
private val expectedPackage = "Test.Package"
|
||||
private val expectedComponent = ComponentName(expectedPackage, "TestClass")
|
||||
@@ -72,22 +74,33 @@ class PackageUpdatedTaskTest {
|
||||
private val expectedWorkspaceItem = spy(WorkspaceItemInfo())
|
||||
|
||||
private val mockIconCache: IconCache = mock()
|
||||
private val mockTaskController: ModelTaskController = mock<ModelTaskController>()
|
||||
private val mockAppFilter: AppFilter = mock<AppFilter>()
|
||||
private lateinit var mAllAppsList: AllAppsList
|
||||
|
||||
private val mockApplicationInfo: ApplicationInfo = mock<ApplicationInfo>()
|
||||
private val mockActivityInfo: ActivityInfo = mock<ActivityInfo>()
|
||||
|
||||
private lateinit var mAllAppsList: AllAppsList
|
||||
private lateinit var mDataModel: BgDataModel
|
||||
private lateinit var mockTaskController: ModelTaskController
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
mAllAppsList = spy(AllAppsList(mockIconCache, mockAppFilter))
|
||||
mLauncherModelHelper.sandboxContext.spyService(LauncherApps::class.java).apply {
|
||||
mContext.initDaggerComponent(
|
||||
DaggerPackageUpdatedTaskTest_TestComponent.builder()
|
||||
.bindAllAppsList(mAllAppsList)
|
||||
.bindAppFilter(mockAppFilter)
|
||||
.bindIconCache(mockIconCache)
|
||||
)
|
||||
|
||||
mContext.spyService(LauncherApps::class.java).apply {
|
||||
whenever(getActivityList(expectedPackage, mUser))
|
||||
.thenReturn(listOf(expectedActivityInfo))
|
||||
}
|
||||
whenever(mAppState.iconCache).thenReturn(mockIconCache)
|
||||
whenever(mockTaskController.app).thenReturn(mAppState)
|
||||
|
||||
mockTaskController = spy((mContext.appComponent as TestComponent).getTaskController())
|
||||
mDataModel = (mContext.appComponent as TestComponent).getDataModel()
|
||||
|
||||
whenever(mockAppFilter.shouldShowApp(expectedComponent)).thenReturn(true)
|
||||
mockApplicationInfo.apply {
|
||||
uid = 1
|
||||
@@ -122,7 +135,6 @@ class PackageUpdatedTaskTest {
|
||||
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
|
||||
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
|
||||
}
|
||||
mLauncherModelHelper.loadModelSync()
|
||||
// Then
|
||||
verify(mockIconCache).updateIconsForPkg(expectedPackage, mUser)
|
||||
verify(mAllAppsList).addPackage(mContext, expectedPackage, mUser)
|
||||
@@ -141,7 +153,6 @@ class PackageUpdatedTaskTest {
|
||||
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
|
||||
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
|
||||
}
|
||||
mLauncherModelHelper.loadModelSync()
|
||||
// Then
|
||||
verify(mockIconCache).updateIconsForPkg(expectedPackage, mUser)
|
||||
verify(mAllAppsList).updatePackage(mContext, expectedPackage, mUser)
|
||||
@@ -159,7 +170,6 @@ class PackageUpdatedTaskTest {
|
||||
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
|
||||
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
|
||||
}
|
||||
mLauncherModelHelper.loadModelSync()
|
||||
// Then
|
||||
verify(mockIconCache).removeIconsForPkg(expectedPackage, mUser)
|
||||
verify(mAllAppsList).removePackage(expectedPackage, mUser)
|
||||
@@ -176,7 +186,6 @@ class PackageUpdatedTaskTest {
|
||||
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
|
||||
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
|
||||
}
|
||||
mLauncherModelHelper.loadModelSync()
|
||||
// Then
|
||||
verify(mAllAppsList).removePackage(expectedPackage, mUser)
|
||||
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWorkspaceItem))
|
||||
@@ -190,10 +199,11 @@ class PackageUpdatedTaskTest {
|
||||
// When
|
||||
mDataModel.addItem(mContext, expectedWorkspaceItem, true)
|
||||
mAllAppsList.add(AppInfo(mContext, expectedActivityInfo, mUser), expectedActivityInfo)
|
||||
mAllAppsList.getAndResetChangeFlag()
|
||||
doAnswer {}.whenever(mockTaskController).bindApplicationsIfNeeded()
|
||||
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
|
||||
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
|
||||
}
|
||||
mLauncherModelHelper.loadModelSync()
|
||||
// Then
|
||||
verify(mAllAppsList).updateDisabledFlags(any(), any())
|
||||
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWorkspaceItem))
|
||||
@@ -206,10 +216,11 @@ class PackageUpdatedTaskTest {
|
||||
val taskUnderTest = PackageUpdatedTask(OP_UNSUSPEND, mUser, expectedPackage)
|
||||
// When
|
||||
mDataModel.addItem(mContext, expectedWorkspaceItem, true)
|
||||
mAllAppsList.getAndResetChangeFlag()
|
||||
doAnswer {}.whenever(mockTaskController).bindApplicationsIfNeeded()
|
||||
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
|
||||
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
|
||||
}
|
||||
mLauncherModelHelper.loadModelSync()
|
||||
// Then
|
||||
verify(mAllAppsList).updateDisabledFlags(any(), any())
|
||||
verify(mockTaskController).bindUpdatedWorkspaceItems(emptyList())
|
||||
@@ -226,10 +237,29 @@ class PackageUpdatedTaskTest {
|
||||
TestUtil.runOnExecutorSync(Executors.MODEL_EXECUTOR) {
|
||||
taskUnderTest.execute(mockTaskController, mDataModel, mAllAppsList)
|
||||
}
|
||||
mLauncherModelHelper.loadModelSync()
|
||||
// Then
|
||||
verify(mAllAppsList).updateDisabledFlags(any(), any())
|
||||
verify(mockTaskController).bindUpdatedWorkspaceItems(emptyList())
|
||||
assertThat(mAllAppsList.data).isEmpty()
|
||||
}
|
||||
|
||||
@LauncherAppSingleton
|
||||
@Component(modules = [AllModulesForTest::class])
|
||||
interface TestComponent : LauncherAppComponent {
|
||||
|
||||
fun getDataModel(): BgDataModel
|
||||
|
||||
fun getTaskController(): ModelTaskController
|
||||
|
||||
@Component.Builder
|
||||
interface Builder : LauncherAppComponent.Builder {
|
||||
@BindsInstance fun bindAppFilter(appFilter: AppFilter): Builder
|
||||
|
||||
@BindsInstance fun bindIconCache(iconCache: IconCache): Builder
|
||||
|
||||
@BindsInstance fun bindAllAppsList(list: AllAppsList): Builder
|
||||
|
||||
override fun build(): TestComponent
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import android.platform.test.flag.junit.SetFlagsRule
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.launcher3.Flags
|
||||
import com.android.launcher3.LauncherAppState
|
||||
import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT
|
||||
import com.android.launcher3.icons.BitmapInfo
|
||||
import com.android.launcher3.icons.CacheableShortcutInfo
|
||||
@@ -73,7 +72,6 @@ class ShortcutsChangedTaskTest {
|
||||
private val user: UserHandle = myUserHandle()
|
||||
private val mockTaskController: ModelTaskController = mock()
|
||||
private val mockAllApps: AllAppsList = mock()
|
||||
private val mockAppState: LauncherAppState = mock()
|
||||
private val mockIconCache: IconCache = mock()
|
||||
|
||||
private val expectedWai =
|
||||
@@ -93,9 +91,8 @@ class ShortcutsChangedTaskTest {
|
||||
modelHelper.loadModelSync()
|
||||
context = modelHelper.sandboxContext
|
||||
launcherApps = context.spyService(LauncherApps::class.java)
|
||||
whenever(mockTaskController.app).thenReturn(mockAppState)
|
||||
whenever(mockAppState.context).thenReturn(context)
|
||||
whenever(mockAppState.iconCache).thenReturn(mockIconCache)
|
||||
whenever(mockTaskController.context).thenReturn(context)
|
||||
whenever(mockTaskController.iconCache).thenReturn(mockIconCache)
|
||||
whenever(mockIconCache.getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>()))
|
||||
.then { _ -> { expectedWai.bitmap = BitmapInfo.LOW_RES_INFO } }
|
||||
shortcuts = emptyList()
|
||||
@@ -132,8 +129,7 @@ class ShortcutsChangedTaskTest {
|
||||
// When
|
||||
shortcutsChangedTask.execute(mockTaskController, modelHelper.bgDataModel, mockAllApps)
|
||||
// Then
|
||||
verify(mockAppState.iconCache)
|
||||
.getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
|
||||
verify(mockIconCache).getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
|
||||
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWai))
|
||||
}
|
||||
|
||||
@@ -196,8 +192,7 @@ class ShortcutsChangedTaskTest {
|
||||
// When
|
||||
shortcutsChangedTask.execute(mockTaskController, modelHelper.bgDataModel, mockAllApps)
|
||||
// Then
|
||||
verify(mockAppState.iconCache)
|
||||
.getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
|
||||
verify(mockIconCache).getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
|
||||
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWai))
|
||||
}
|
||||
|
||||
@@ -256,8 +251,7 @@ class ShortcutsChangedTaskTest {
|
||||
// When
|
||||
shortcutsChangedTask.execute(mockTaskController, modelHelper.bgDataModel, mockAllApps)
|
||||
// Then
|
||||
verify(mockAppState.iconCache)
|
||||
.getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
|
||||
verify(mockIconCache).getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
|
||||
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWai))
|
||||
}
|
||||
|
||||
@@ -287,8 +281,7 @@ class ShortcutsChangedTaskTest {
|
||||
// When
|
||||
shortcutsChangedTask.execute(mockTaskController, modelHelper.bgDataModel, mockAllApps)
|
||||
// Then
|
||||
verify(mockAppState.iconCache)
|
||||
.getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
|
||||
verify(mockIconCache).getShortcutIcon(eq(expectedWai), any<CacheableShortcutInfo>())
|
||||
verify(mockTaskController).bindUpdatedWorkspaceItems(listOf(expectedWai))
|
||||
}
|
||||
|
||||
|
||||
@@ -25,9 +25,9 @@ import android.platform.test.rule.DeviceProduct
|
||||
import android.platform.test.rule.LimitDevicesRule
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.android.launcher3.AppFilter
|
||||
import com.android.launcher3.DeviceProfile
|
||||
import com.android.launcher3.InvariantDeviceProfile
|
||||
import com.android.launcher3.LauncherAppState
|
||||
import com.android.launcher3.icons.IconCache
|
||||
import com.android.launcher3.model.data.PackageItemInfo
|
||||
import com.android.launcher3.pm.UserCache
|
||||
@@ -62,7 +62,6 @@ class WidgetsModelTest {
|
||||
@Rule @JvmField val mockitoRule: MockitoRule = MockitoJUnit.rule()
|
||||
|
||||
@Mock private lateinit var appWidgetManager: AppWidgetManager
|
||||
@Mock private lateinit var app: LauncherAppState
|
||||
@Mock private lateinit var iconCacheMock: IconCache
|
||||
|
||||
private lateinit var context: Context
|
||||
@@ -93,9 +92,6 @@ class WidgetsModelTest {
|
||||
|
||||
whenever(iconCacheMock.getTitleNoCache(any<LauncherAppWidgetProviderInfo>()))
|
||||
.thenReturn("title")
|
||||
whenever(app.iconCache).thenReturn(iconCacheMock)
|
||||
whenever(app.context).thenReturn(context)
|
||||
whenever(app.invariantDeviceProfile).thenReturn(idp)
|
||||
|
||||
val widgetToCategoryEntry: Map.Entry<ComponentName, IntSet> =
|
||||
WidgetSections.getWidgetsToCategory(context).entries.first()
|
||||
@@ -128,7 +124,7 @@ class WidgetsModelTest {
|
||||
val userCache = spy(UserCache.INSTANCE.get(context))
|
||||
whenever(userCache.userProfiles).thenReturn(listOf(UserHandle.CURRENT))
|
||||
|
||||
underTest = WidgetsModel()
|
||||
underTest = WidgetsModel(context, idp, iconCacheMock, AppFilter(context))
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -237,7 +233,7 @@ class WidgetsModelTest {
|
||||
update = false
|
||||
// Similarly, model could update its code independently while a client is
|
||||
// iterating on the list.
|
||||
underTest.update(app, /* packageUser= */ null)
|
||||
underTest.update(/* packageUser= */ null)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -253,7 +249,7 @@ class WidgetsModelTest {
|
||||
private fun loadWidgets() {
|
||||
val latch = CountDownLatch(1)
|
||||
Executors.MODEL_EXECUTOR.execute {
|
||||
underTest.update(app, /* packageUser= */ null)
|
||||
underTest.update(/* packageUser= */ null)
|
||||
latch.countDown()
|
||||
}
|
||||
if (!latch.await(LOAD_WIDGETS_TIMEOUT_SECONDS, TimeUnit.SECONDS)) {
|
||||
|
||||
+30
-41
@@ -31,7 +31,7 @@ import android.platform.test.flag.junit.SetFlagsRule
|
||||
import android.util.LongSparseArray
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import com.android.launcher3.Flags
|
||||
import com.android.launcher3.LauncherAppState
|
||||
import com.android.launcher3.InvariantDeviceProfile
|
||||
import com.android.launcher3.LauncherSettings.Favorites
|
||||
import com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP
|
||||
import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION
|
||||
@@ -41,6 +41,7 @@ import com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_FOLDER
|
||||
import com.android.launcher3.Utilities.EMPTY_PERSON_ARRAY
|
||||
import com.android.launcher3.backuprestore.LauncherRestoreEventLogger.RestoreError
|
||||
import com.android.launcher3.icons.CacheableShortcutInfo
|
||||
import com.android.launcher3.icons.IconCache
|
||||
import com.android.launcher3.model.data.FolderInfo
|
||||
import com.android.launcher3.model.data.IconRequestInfo
|
||||
import com.android.launcher3.model.data.ItemInfo
|
||||
@@ -66,12 +67,14 @@ import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Answers
|
||||
import org.mockito.ArgumentCaptor
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.RETURNS_DEEP_STUBS
|
||||
import org.mockito.Mockito.mock
|
||||
import org.mockito.Mockito.times
|
||||
import org.mockito.Mockito.verify
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.mockito.kotlin.any
|
||||
import org.mockito.kotlin.anyOrNull
|
||||
import org.mockito.kotlin.doAnswer
|
||||
@@ -88,12 +91,12 @@ class WorkspaceItemProcessorTest {
|
||||
@Mock private lateinit var mockIconRequestInfo: IconRequestInfo<WorkspaceItemInfo>
|
||||
@Mock private lateinit var mockWorkspaceInfo: WorkspaceItemInfo
|
||||
@Mock private lateinit var mockBgDataModel: BgDataModel
|
||||
@Mock private lateinit var mockAppState: LauncherAppState
|
||||
@Mock private lateinit var mockPmHelper: PackageManagerHelper
|
||||
@Mock private lateinit var mockCursor: LoaderCursor
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS) private lateinit var mockCursor: LoaderCursor
|
||||
@Mock private lateinit var mockUserCache: UserCache
|
||||
@Mock private lateinit var mockUserManagerState: UserManagerState
|
||||
@Mock private lateinit var mockWidgetInflater: WidgetInflater
|
||||
@Mock private lateinit var mockIconCache: IconCache
|
||||
|
||||
lateinit var mModelHelper: LauncherModelHelper
|
||||
lateinit var mContext: SandboxModelContext
|
||||
@@ -114,6 +117,7 @@ class WorkspaceItemProcessorTest {
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
mModelHelper = LauncherModelHelper()
|
||||
mContext = mModelHelper.sandboxContext
|
||||
mLauncherApps =
|
||||
@@ -122,9 +126,6 @@ class WorkspaceItemProcessorTest {
|
||||
doReturn(true).whenever(this).isActivityEnabled(mComponentName, mUserHandle)
|
||||
}
|
||||
mUserHandle = Process.myUserHandle()
|
||||
mockIconRequestInfo = mock<IconRequestInfo<WorkspaceItemInfo>>()
|
||||
mockWorkspaceInfo = mock<WorkspaceItemInfo>()
|
||||
mockBgDataModel = mock<BgDataModel>()
|
||||
mComponentName = ComponentName("package", "class")
|
||||
mUnlockedUsersArray = LongSparseArray<Boolean>(1).apply { put(101, true) }
|
||||
mIntent =
|
||||
@@ -133,40 +134,26 @@ class WorkspaceItemProcessorTest {
|
||||
`package` = "pkg"
|
||||
putExtra(ShortcutKey.EXTRA_SHORTCUT_ID, "")
|
||||
}
|
||||
mockAppState =
|
||||
mock<LauncherAppState>().apply {
|
||||
whenever(context).thenReturn(mContext)
|
||||
whenever(iconCache).thenReturn(mock())
|
||||
whenever(iconCache.getShortcutIcon(any(), any(), any())).then {}
|
||||
}
|
||||
mockPmHelper =
|
||||
mock<PackageManagerHelper>().apply {
|
||||
whenever(getAppLaunchIntent(mComponentName.packageName, mUserHandle))
|
||||
.thenReturn(mIntent)
|
||||
}
|
||||
mockCursor =
|
||||
mock(LoaderCursor::class.java, RETURNS_DEEP_STUBS).apply {
|
||||
user = mUserHandle
|
||||
itemType = ITEM_TYPE_APPLICATION
|
||||
id = 1
|
||||
restoreFlag = 1
|
||||
serialNumber = 101
|
||||
whenever(parseIntent()).thenReturn(mIntent)
|
||||
whenever(markRestored()).doAnswer { restoreFlag = 0 }
|
||||
whenever(updater().put(Favorites.INTENT, mIntent.toUri(0)).commit()).thenReturn(1)
|
||||
whenever(getAppShortcutInfo(any(), any(), any(), any()))
|
||||
.thenReturn(mockWorkspaceInfo)
|
||||
whenever(createIconRequestInfo(any(), any())).thenReturn(mockIconRequestInfo)
|
||||
}
|
||||
mockUserCache =
|
||||
mock<UserCache>().apply {
|
||||
val userIconInfo =
|
||||
mock<UserIconInfo>().apply { whenever(isPrivate).thenReturn(false) }
|
||||
whenever(getUserInfo(any())).thenReturn(userIconInfo)
|
||||
}
|
||||
whenever(mockIconCache.getShortcutIcon(any(), any(), any())).then {}
|
||||
whenever(mockPmHelper.getAppLaunchIntent(mComponentName.packageName, mUserHandle))
|
||||
.thenReturn(mIntent)
|
||||
mockCursor.apply {
|
||||
user = mUserHandle
|
||||
itemType = ITEM_TYPE_APPLICATION
|
||||
id = 1
|
||||
restoreFlag = 1
|
||||
serialNumber = 101
|
||||
whenever(parseIntent()).thenReturn(mIntent)
|
||||
whenever(markRestored()).doAnswer { restoreFlag = 0 }
|
||||
whenever(updater().put(Favorites.INTENT, mIntent.toUri(0)).commit()).thenReturn(1)
|
||||
whenever(getAppShortcutInfo(any(), any(), any(), any())).thenReturn(mockWorkspaceInfo)
|
||||
whenever(createIconRequestInfo(any(), any())).thenReturn(mockIconRequestInfo)
|
||||
}
|
||||
mockUserCache.apply {
|
||||
val userIconInfo = mock<UserIconInfo>().apply { whenever(isPrivate).thenReturn(false) }
|
||||
whenever(getUserInfo(any())).thenReturn(userIconInfo)
|
||||
}
|
||||
|
||||
mockUserManagerState = mock<UserManagerState>()
|
||||
mockWidgetInflater = mock<WidgetInflater>()
|
||||
mKeyToPinnedShortcutsMap = mutableMapOf()
|
||||
mInstallingPkgs = hashMapOf()
|
||||
mAllDeepShortcuts = mutableListOf()
|
||||
@@ -187,7 +174,6 @@ class WorkspaceItemProcessorTest {
|
||||
userManagerState: UserManagerState = mockUserManagerState,
|
||||
launcherApps: LauncherApps = mLauncherApps,
|
||||
shortcutKeyToPinnedShortcuts: Map<ShortcutKey, ShortcutInfo> = mKeyToPinnedShortcutsMap,
|
||||
app: LauncherAppState = mockAppState,
|
||||
bgDataModel: BgDataModel = mockBgDataModel,
|
||||
widgetProvidersMap: MutableMap<ComponentKey, AppWidgetProviderInfo?> = mWidgetProvidersMap,
|
||||
widgetInflater: WidgetInflater = mockWidgetInflater,
|
||||
@@ -205,7 +191,7 @@ class WorkspaceItemProcessorTest {
|
||||
userCache = userCache,
|
||||
userManagerState = userManagerState,
|
||||
launcherApps = launcherApps,
|
||||
app = app,
|
||||
context = mContext,
|
||||
bgDataModel = bgDataModel,
|
||||
widgetProvidersMap = widgetProvidersMap,
|
||||
widgetInflater = widgetInflater,
|
||||
@@ -217,6 +203,9 @@ class WorkspaceItemProcessorTest {
|
||||
shortcutKeyToPinnedShortcuts = shortcutKeyToPinnedShortcuts,
|
||||
installingPkgs = installingPkgs,
|
||||
allDeepShortcuts = allDeepShortcuts,
|
||||
iconCache = mockIconCache,
|
||||
idp = InvariantDeviceProfile.INSTANCE.get(mContext),
|
||||
isSafeMode = false,
|
||||
)
|
||||
|
||||
@Test
|
||||
|
||||
+4
-9
@@ -29,8 +29,6 @@ import org.junit.runner.RunWith
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class WorkspaceItemSpaceFinderTest : AbstractWorkspaceModelTest() {
|
||||
|
||||
private val mItemSpaceFinder = WorkspaceItemSpaceFinder()
|
||||
|
||||
@Before
|
||||
override fun setup() {
|
||||
super.setup()
|
||||
@@ -42,15 +40,12 @@ class WorkspaceItemSpaceFinderTest : AbstractWorkspaceModelTest() {
|
||||
}
|
||||
|
||||
private fun findSpace(spanX: Int, spanY: Int): NewItemSpace =
|
||||
mItemSpaceFinder
|
||||
.findSpaceForItem(
|
||||
mAppState,
|
||||
WorkspaceItemSpaceFinder(
|
||||
mModelHelper.bgDataModel,
|
||||
mExistingScreens,
|
||||
mNewScreens,
|
||||
spanX,
|
||||
spanY,
|
||||
mAppState.invariantDeviceProfile,
|
||||
mModelHelper.model,
|
||||
)
|
||||
.findSpaceForItem(mExistingScreens, mNewScreens, spanX, spanY)
|
||||
.let { NewItemSpace.fromIntArray(it) }
|
||||
|
||||
private fun assertRegionVacant(newItemSpace: NewItemSpace, spanX: Int, spanY: Int) {
|
||||
|
||||
Reference in New Issue
Block a user