diff options
8 files changed, 130 insertions, 166 deletions
diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/ActivityTaskManagerTasksRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/ActivityTaskManagerTasksRepositoryTest.kt index dbfab64b004a..bda0e1ed5c46 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/ActivityTaskManagerTasksRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/ActivityTaskManagerTasksRepositoryTest.kt @@ -21,32 +21,25 @@ import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createTask -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createToken +import com.android.systemui.kosmos.testScope +import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask +import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createToken +import com.android.systemui.mediaprojection.taskswitcher.activityTaskManagerTasksRepository +import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager +import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos import com.google.common.truth.Truth.assertThat -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestScope -import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith -@OptIn(ExperimentalCoroutinesApi::class) @RunWith(AndroidTestingRunner::class) @SmallTest class ActivityTaskManagerTasksRepositoryTest : SysuiTestCase() { - private val fakeActivityTaskManager = FakeActivityTaskManager() - - private val dispatcher = UnconfinedTestDispatcher() - private val testScope = TestScope(dispatcher) - - private val repo = - ActivityTaskManagerTasksRepository( - activityTaskManager = fakeActivityTaskManager.activityTaskManager, - applicationScope = testScope.backgroundScope, - backgroundDispatcher = dispatcher - ) + private val kosmos = taskSwitcherKosmos() + private val fakeActivityTaskManager = kosmos.fakeActivityTaskManager + private val testScope = kosmos.testScope + private val repo = kosmos.activityTaskManagerTasksRepository @Test fun launchRecentTask_taskIsMovedToForeground() = diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/MediaProjectionManagerRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/MediaProjectionManagerRepositoryTest.kt index fdd434acdc9f..6043ede66b31 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/MediaProjectionManagerRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/MediaProjectionManagerRepositoryTest.kt @@ -17,50 +17,35 @@ package com.android.systemui.mediaprojection.taskswitcher.data.repository import android.os.Binder -import android.os.Handler import android.testing.AndroidTestingRunner import android.view.ContentRecordingSession import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue +import com.android.systemui.kosmos.testScope +import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask +import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createToken import com.android.systemui.mediaprojection.taskswitcher.data.model.MediaProjectionState -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createTask -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createToken +import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager +import com.android.systemui.mediaprojection.taskswitcher.fakeMediaProjectionManager +import com.android.systemui.mediaprojection.taskswitcher.mediaProjectionManagerRepository +import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos import com.google.common.truth.Truth.assertThat -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestScope -import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith -@OptIn(ExperimentalCoroutinesApi::class) @RunWith(AndroidTestingRunner::class) @SmallTest class MediaProjectionManagerRepositoryTest : SysuiTestCase() { - private val dispatcher = UnconfinedTestDispatcher() - private val testScope = TestScope(dispatcher) - - private val fakeMediaProjectionManager = FakeMediaProjectionManager() - private val fakeActivityTaskManager = FakeActivityTaskManager() - - private val tasksRepo = - ActivityTaskManagerTasksRepository( - activityTaskManager = fakeActivityTaskManager.activityTaskManager, - applicationScope = testScope.backgroundScope, - backgroundDispatcher = dispatcher - ) - - private val repo = - MediaProjectionManagerRepository( - mediaProjectionManager = fakeMediaProjectionManager.mediaProjectionManager, - handler = Handler.getMain(), - applicationScope = testScope.backgroundScope, - tasksRepository = tasksRepo, - backgroundDispatcher = dispatcher, - mediaProjectionServiceHelper = fakeMediaProjectionManager.helper - ) + private val kosmos = taskSwitcherKosmos() + private val testScope = kosmos.testScope + + private val fakeMediaProjectionManager = kosmos.fakeMediaProjectionManager + private val fakeActivityTaskManager = kosmos.fakeActivityTaskManager + + private val repo = kosmos.mediaProjectionManagerRepository @Test fun switchProjectedTask_stateIsUpdatedWithNewTask() = diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/domain/interactor/TaskSwitchInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/domain/interactor/TaskSwitchInteractorTest.kt index dfb688bbde4b..33e65f26716a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/domain/interactor/TaskSwitchInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/domain/interactor/TaskSwitchInteractorTest.kt @@ -17,55 +17,33 @@ package com.android.systemui.mediaprojection.taskswitcher.domain.interactor import android.content.Intent -import android.os.Handler import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue -import com.android.systemui.mediaprojection.taskswitcher.data.repository.ActivityTaskManagerTasksRepository -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createTask -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager.Companion.createSingleTaskSession -import com.android.systemui.mediaprojection.taskswitcher.data.repository.MediaProjectionManagerRepository +import com.android.systemui.kosmos.testScope +import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask +import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionManager +import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionManager.Companion.createSingleTaskSession import com.android.systemui.mediaprojection.taskswitcher.domain.model.TaskSwitchState +import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager +import com.android.systemui.mediaprojection.taskswitcher.fakeMediaProjectionManager +import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherInteractor +import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos import com.google.common.truth.Truth.assertThat -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestScope -import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith -@OptIn(ExperimentalCoroutinesApi::class) @RunWith(AndroidTestingRunner::class) @SmallTest class TaskSwitchInteractorTest : SysuiTestCase() { - private val dispatcher = UnconfinedTestDispatcher() - private val testScope = TestScope(dispatcher) - - private val fakeActivityTaskManager = FakeActivityTaskManager() - private val fakeMediaProjectionManager = FakeMediaProjectionManager() - - private val tasksRepo = - ActivityTaskManagerTasksRepository( - activityTaskManager = fakeActivityTaskManager.activityTaskManager, - applicationScope = testScope.backgroundScope, - backgroundDispatcher = dispatcher - ) - - private val mediaRepo = - MediaProjectionManagerRepository( - mediaProjectionManager = fakeMediaProjectionManager.mediaProjectionManager, - handler = Handler.getMain(), - applicationScope = testScope.backgroundScope, - tasksRepository = tasksRepo, - backgroundDispatcher = dispatcher, - mediaProjectionServiceHelper = fakeMediaProjectionManager.helper, - ) - - private val interactor = TaskSwitchInteractor(mediaRepo, tasksRepo) + private val kosmos = taskSwitcherKosmos() + private val testScope = kosmos.testScope + private val fakeActivityTaskManager = kosmos.fakeActivityTaskManager + private val fakeMediaProjectionManager = kosmos.fakeMediaProjectionManager + private val interactor = kosmos.taskSwitcherInteractor @Test fun taskSwitchChanges_notProjecting_foregroundTaskChange_emitsNotProjectingTask() = diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/ui/TaskSwitcherNotificationCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/ui/TaskSwitcherNotificationCoordinatorTest.kt index c4e939339fa1..9382c5882b25 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/ui/TaskSwitcherNotificationCoordinatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/ui/TaskSwitcherNotificationCoordinatorTest.kt @@ -18,26 +18,22 @@ package com.android.systemui.mediaprojection.taskswitcher.ui import android.app.Notification import android.app.NotificationManager -import android.os.Handler import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase -import com.android.systemui.mediaprojection.taskswitcher.data.repository.ActivityTaskManagerTasksRepository -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createTask -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager -import com.android.systemui.mediaprojection.taskswitcher.data.repository.MediaProjectionManagerRepository -import com.android.systemui.mediaprojection.taskswitcher.domain.interactor.TaskSwitchInteractor -import com.android.systemui.mediaprojection.taskswitcher.ui.viewmodel.TaskSwitcherNotificationViewModel +import com.android.systemui.kosmos.testScope +import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask +import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionManager +import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager +import com.android.systemui.mediaprojection.taskswitcher.fakeMediaProjectionManager +import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos +import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherViewModel import com.android.systemui.res.R import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.mock import com.google.common.truth.Truth.assertThat import junit.framework.Assert.assertEquals -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestScope -import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test @@ -46,39 +42,16 @@ import org.mockito.ArgumentCaptor import org.mockito.Mockito.never import org.mockito.Mockito.verify -@OptIn(ExperimentalCoroutinesApi::class) @RunWith(AndroidTestingRunner::class) @SmallTest class TaskSwitcherNotificationCoordinatorTest : SysuiTestCase() { private val notificationManager = mock<NotificationManager>() - - private val dispatcher = UnconfinedTestDispatcher() - private val testScope = TestScope(dispatcher) - - private val fakeActivityTaskManager = FakeActivityTaskManager() - private val fakeMediaProjectionManager = FakeMediaProjectionManager() - - private val tasksRepo = - ActivityTaskManagerTasksRepository( - activityTaskManager = fakeActivityTaskManager.activityTaskManager, - applicationScope = testScope.backgroundScope, - backgroundDispatcher = dispatcher - ) - - private val mediaRepo = - MediaProjectionManagerRepository( - mediaProjectionManager = fakeMediaProjectionManager.mediaProjectionManager, - handler = Handler.getMain(), - applicationScope = testScope.backgroundScope, - tasksRepository = tasksRepo, - backgroundDispatcher = dispatcher, - mediaProjectionServiceHelper = fakeMediaProjectionManager.helper, - ) - - private val interactor = TaskSwitchInteractor(mediaRepo, tasksRepo) - private val viewModel = - TaskSwitcherNotificationViewModel(interactor, backgroundDispatcher = dispatcher) + private val kosmos = taskSwitcherKosmos() + private val testScope = kosmos.testScope + private val fakeActivityTaskManager = kosmos.fakeActivityTaskManager + private val fakeMediaProjectionManager = kosmos.fakeMediaProjectionManager + private val viewModel = kosmos.taskSwitcherViewModel private lateinit var coordinator: TaskSwitcherNotificationCoordinator diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/ui/viewmodel/TaskSwitcherNotificationViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/ui/viewmodel/TaskSwitcherNotificationViewModelTest.kt index 687f97082ce4..a468953b971e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/ui/viewmodel/TaskSwitcherNotificationViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/ui/viewmodel/TaskSwitcherNotificationViewModelTest.kt @@ -17,64 +17,35 @@ package com.android.systemui.mediaprojection.taskswitcher.ui.viewmodel import android.content.Intent -import android.os.Handler import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue -import com.android.systemui.mediaprojection.taskswitcher.data.repository.ActivityTaskManagerTasksRepository -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeActivityTaskManager.Companion.createTask -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager.Companion.createDisplaySession -import com.android.systemui.mediaprojection.taskswitcher.data.repository.FakeMediaProjectionManager.Companion.createSingleTaskSession -import com.android.systemui.mediaprojection.taskswitcher.data.repository.MediaProjectionManagerRepository -import com.android.systemui.mediaprojection.taskswitcher.domain.interactor.TaskSwitchInteractor +import com.android.systemui.kosmos.testScope +import com.android.systemui.mediaprojection.taskswitcher.FakeActivityTaskManager.Companion.createTask +import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionManager.Companion.createDisplaySession +import com.android.systemui.mediaprojection.taskswitcher.FakeMediaProjectionManager.Companion.createSingleTaskSession +import com.android.systemui.mediaprojection.taskswitcher.fakeActivityTaskManager +import com.android.systemui.mediaprojection.taskswitcher.fakeMediaProjectionManager +import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherKosmos +import com.android.systemui.mediaprojection.taskswitcher.taskSwitcherViewModel import com.android.systemui.mediaprojection.taskswitcher.ui.model.TaskSwitcherNotificationUiState import com.android.systemui.mediaprojection.taskswitcher.ui.viewmodel.TaskSwitcherNotificationViewModel.Companion.NOTIFICATION_MAX_SHOW_DURATION import com.google.common.truth.Truth.assertThat import kotlin.time.Duration.Companion.milliseconds -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestCoroutineScheduler -import kotlinx.coroutines.test.TestScope -import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith -@OptIn(ExperimentalCoroutinesApi::class) @RunWith(AndroidTestingRunner::class) @SmallTest class TaskSwitcherNotificationViewModelTest : SysuiTestCase() { - private val scheduler = TestCoroutineScheduler() - private val dispatcher = UnconfinedTestDispatcher(scheduler) - private val testScope = TestScope(dispatcher) - - private val fakeActivityTaskManager = FakeActivityTaskManager() - private val fakeMediaProjectionManager = FakeMediaProjectionManager() - - private val tasksRepo = - ActivityTaskManagerTasksRepository( - activityTaskManager = fakeActivityTaskManager.activityTaskManager, - applicationScope = testScope.backgroundScope, - backgroundDispatcher = dispatcher - ) - - private val mediaRepo = - MediaProjectionManagerRepository( - mediaProjectionManager = fakeMediaProjectionManager.mediaProjectionManager, - handler = Handler.getMain(), - applicationScope = testScope.backgroundScope, - tasksRepository = tasksRepo, - backgroundDispatcher = dispatcher, - mediaProjectionServiceHelper = fakeMediaProjectionManager.helper, - ) - - private val interactor = TaskSwitchInteractor(mediaRepo, tasksRepo) - - private val viewModel = - TaskSwitcherNotificationViewModel(interactor, backgroundDispatcher = dispatcher) + private val kosmos = taskSwitcherKosmos() + private val testScope = kosmos.testScope + private val fakeActivityTaskManager = kosmos.fakeActivityTaskManager + private val fakeMediaProjectionManager = kosmos.fakeMediaProjectionManager + private val viewModel = kosmos.taskSwitcherViewModel @Test fun uiState_notProjecting_emitsNotShowing() = diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/FakeActivityTaskManager.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/FakeActivityTaskManager.kt index 920e5ee94cca..41d2d600e627 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/FakeActivityTaskManager.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/FakeActivityTaskManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The Android Open Source Project + * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.mediaprojection.taskswitcher.data.repository +package com.android.systemui.mediaprojection.taskswitcher import android.app.ActivityManager.RunningTaskInfo import android.app.IActivityTaskManager diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/FakeMediaProjectionManager.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/FakeMediaProjectionManager.kt index 28393e837b93..2b6032ccafe5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/taskswitcher/data/repository/FakeMediaProjectionManager.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/FakeMediaProjectionManager.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The Android Open Source Project + * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.mediaprojection.taskswitcher.data.repository +package com.android.systemui.mediaprojection.taskswitcher import android.media.projection.MediaProjectionInfo import android.media.projection.MediaProjectionManager diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/TaskSwitcherKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/TaskSwitcherKosmos.kt new file mode 100644 index 000000000000..d344b75c9eb7 --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/mediaprojection/taskswitcher/TaskSwitcherKosmos.kt @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.mediaprojection.taskswitcher + +import android.os.Handler +import com.android.systemui.kosmos.Kosmos +import com.android.systemui.kosmos.applicationCoroutineScope +import com.android.systemui.kosmos.testDispatcher +import com.android.systemui.mediaprojection.taskswitcher.data.repository.ActivityTaskManagerTasksRepository +import com.android.systemui.mediaprojection.taskswitcher.data.repository.MediaProjectionManagerRepository +import com.android.systemui.mediaprojection.taskswitcher.domain.interactor.TaskSwitchInteractor +import com.android.systemui.mediaprojection.taskswitcher.ui.viewmodel.TaskSwitcherNotificationViewModel +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.UnconfinedTestDispatcher + +val Kosmos.fakeActivityTaskManager by Kosmos.Fixture { FakeActivityTaskManager() } + +val Kosmos.fakeMediaProjectionManager by Kosmos.Fixture { FakeMediaProjectionManager() } + +val Kosmos.activityTaskManagerTasksRepository by + Kosmos.Fixture { + ActivityTaskManagerTasksRepository( + activityTaskManager = fakeActivityTaskManager.activityTaskManager, + applicationScope = applicationCoroutineScope, + backgroundDispatcher = testDispatcher + ) + } + +val Kosmos.mediaProjectionManagerRepository by + Kosmos.Fixture { + MediaProjectionManagerRepository( + mediaProjectionManager = fakeMediaProjectionManager.mediaProjectionManager, + handler = Handler.getMain(), + applicationScope = applicationCoroutineScope, + tasksRepository = activityTaskManagerTasksRepository, + backgroundDispatcher = testDispatcher, + mediaProjectionServiceHelper = fakeMediaProjectionManager.helper, + ) + } + +val Kosmos.taskSwitcherInteractor by + Kosmos.Fixture { + TaskSwitchInteractor(mediaProjectionManagerRepository, activityTaskManagerTasksRepository) + } + +val Kosmos.taskSwitcherViewModel by + Kosmos.Fixture { TaskSwitcherNotificationViewModel(taskSwitcherInteractor, testDispatcher) } + +@OptIn(ExperimentalCoroutinesApi::class) +fun taskSwitcherKosmos() = Kosmos().apply { testDispatcher = UnconfinedTestDispatcher() } |