Loading app/src/main/java/foundation/e/apps/data/install/core/AppInstallProcessor.kt +3 −3 Original line number Diff line number Diff line Loading @@ -23,14 +23,14 @@ import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.install.AppInstallComponents import foundation.e.apps.data.install.models.AppInstall import foundation.e.apps.data.install.core.helper.InstallationRequest import foundation.e.apps.data.install.core.helper.AppInstallStartCoordinator import foundation.e.apps.data.install.core.helper.InstallationEnqueuer import foundation.e.apps.data.install.core.helper.AppInstallWorkRunner import foundation.e.apps.domain.model.install.Status import javax.inject.Inject class AppInstallProcessor @Inject constructor( private val appInstallComponents: AppInstallComponents, private val appInstallStartCoordinator: AppInstallStartCoordinator, private val installationEnqueuer: InstallationEnqueuer, private val appInstallWorkRunner: AppInstallWorkRunner, private val installationRequest: InstallationRequest, ) { Loading Loading @@ -65,7 +65,7 @@ class AppInstallProcessor @Inject constructor( isAnUpdate: Boolean = false, isSystemApp: Boolean = false ): Boolean { return appInstallStartCoordinator.enqueue(appInstall, isAnUpdate, isSystemApp) return installationEnqueuer.enqueue(appInstall, isAnUpdate, isSystemApp) } suspend fun processInstall( Loading app/src/main/java/foundation/e/apps/data/install/core/helper/AppInstallStartCoordinator.kt→app/src/main/java/foundation/e/apps/data/install/core/helper/InstallationEnqueuer.kt +1 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ import kotlinx.coroutines.CancellationException import timber.log.Timber import javax.inject.Inject class AppInstallStartCoordinator @Inject constructor( class InstallationEnqueuer @Inject constructor( @ApplicationContext private val context: Context, private val preEnqueueChecker: PreEnqueueChecker, private val appManagerWrapper: AppManagerWrapper, Loading app/src/test/java/foundation/e/apps/installProcessor/AppInstallProcessorTest.kt +8 −8 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ import foundation.e.apps.data.install.AppManagerWrapper import foundation.e.apps.data.install.models.AppInstall import foundation.e.apps.data.install.core.AppInstallProcessor import foundation.e.apps.data.install.core.helper.InstallationRequest import foundation.e.apps.data.install.core.helper.AppInstallStartCoordinator import foundation.e.apps.data.install.core.helper.InstallationEnqueuer import foundation.e.apps.data.install.core.helper.AppInstallWorkRunner import foundation.e.apps.util.MainCoroutineRule import io.mockk.coEvery Loading @@ -56,7 +56,7 @@ class AppInstallProcessorTest { private lateinit var appManagerWrapper: AppManagerWrapper private lateinit var appInstallProcessor: AppInstallProcessor private lateinit var installationRequest: InstallationRequest private lateinit var appInstallStartCoordinator: AppInstallStartCoordinator private lateinit var installationEnqueuer: InstallationEnqueuer private lateinit var appInstallWorkRunner: AppInstallWorkRunner @Before Loading @@ -65,12 +65,12 @@ class AppInstallProcessorTest { val appInstallRepository = mockk<AppInstallRepository>(relaxed = true) val appInstallComponents = AppInstallComponents(appInstallRepository, appManagerWrapper) installationRequest = mockk(relaxed = true) appInstallStartCoordinator = mockk(relaxed = true) installationEnqueuer = mockk(relaxed = true) appInstallWorkRunner = mockk(relaxed = true) appInstallProcessor = AppInstallProcessor( appInstallComponents, appInstallStartCoordinator, installationEnqueuer, appInstallWorkRunner, installationRequest ) Loading @@ -90,7 +90,7 @@ class AppInstallProcessorTest { coEvery { installationRequest.create(application) } returns appInstall coEvery { appManagerWrapper.isFusedDownloadInstalled(appInstall) } returns false coEvery { appInstallStartCoordinator.enqueue( installationEnqueuer.enqueue( appInstall, true, application.isSystemApp Loading @@ -101,18 +101,18 @@ class AppInstallProcessorTest { assertTrue(result) coVerify { installationRequest.create(application) } coVerify { appInstallStartCoordinator.enqueue(appInstall, true, application.isSystemApp) } coVerify { installationEnqueuer.enqueue(appInstall, true, application.isSystemApp) } } @Test fun enqueueFusedDownload_delegatesResult() = runTest { val appInstall = AppInstall(id = "123", packageName = "com.example.app") coEvery { appInstallStartCoordinator.enqueue(appInstall, true, true) } returns false coEvery { installationEnqueuer.enqueue(appInstall, true, true) } returns false val result = appInstallProcessor.enqueueFusedDownload(appInstall, true, true) assertEquals(false, result) coVerify { appInstallStartCoordinator.enqueue(appInstall, true, true) } coVerify { installationEnqueuer.enqueue(appInstall, true, true) } } @Test Loading app/src/test/java/foundation/e/apps/installProcessor/AppInstallStartCoordinatorTest.kt→app/src/test/java/foundation/e/apps/installProcessor/InstallationEnqueuerTest.kt +14 −14 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ import foundation.e.apps.data.install.core.helper.AgeLimitGate import foundation.e.apps.data.install.core.helper.DevicePreconditions import foundation.e.apps.data.install.core.helper.DownloadUrlRefresher import foundation.e.apps.data.install.core.helper.PreEnqueueChecker import foundation.e.apps.data.install.core.helper.AppInstallStartCoordinator import foundation.e.apps.data.install.core.helper.InstallationEnqueuer import foundation.e.apps.data.install.workmanager.InstallWorkManager import foundation.e.apps.data.install.wrapper.NetworkStatusChecker import foundation.e.apps.data.install.wrapper.StorageSpaceChecker Loading @@ -60,7 +60,7 @@ import org.junit.Before import org.junit.Test @OptIn(ExperimentalCoroutinesApi::class) class AppInstallStartCoordinatorTest { class InstallationEnqueuerTest { private lateinit var context: Context private lateinit var appManagerWrapper: AppManagerWrapper private lateinit var applicationRepository: ApplicationRepository Loading @@ -76,7 +76,7 @@ class AppInstallStartCoordinatorTest { private lateinit var devicePreconditions: DevicePreconditions private lateinit var downloadUrlRefresher: DownloadUrlRefresher private lateinit var preflightChecker: PreEnqueueChecker private lateinit var coordinator: AppInstallStartCoordinator private lateinit var enqueuer: InstallationEnqueuer @Before fun setup() { Loading Loading @@ -114,7 +114,7 @@ class AppInstallStartCoordinatorTest { ageLimitGate, devicePreconditions ) coordinator = AppInstallStartCoordinator( enqueuer = InstallationEnqueuer( context, preflightChecker, appManagerWrapper, Loading @@ -133,7 +133,7 @@ class AppInstallStartCoordinatorTest { every { networkStatusChecker.isNetworkAvailable() } returns true every { storageSpaceChecker.spaceMissing(appInstall) } returns 0L val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertTrue(result) } Loading @@ -147,7 +147,7 @@ class AppInstallStartCoordinatorTest { every { networkStatusChecker.isNetworkAvailable() } returns false every { storageSpaceChecker.spaceMissing(appInstall) } returns 0L val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) coVerify { appManagerWrapper.installationIssue(appInstall) } Loading @@ -162,7 +162,7 @@ class AppInstallStartCoordinatorTest { every { networkStatusChecker.isNetworkAvailable() } returns true every { storageSpaceChecker.spaceMissing(appInstall) } returns 100L val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) verify { storageNotificationManager.showNotEnoughSpaceNotification(appInstall) } Loading @@ -175,7 +175,7 @@ class AppInstallStartCoordinatorTest { coEvery { appManagerWrapper.addDownload(appInstall) } returns false val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) coVerify(exactly = 0) { ageLimitGate.allow(any()) } Loading @@ -197,7 +197,7 @@ class AppInstallStartCoordinatorTest { every { storageSpaceChecker.spaceMissing(appInstall) } returns 0L justRun { InstallWorkManager.enqueueWork(any(), any(), any()) } val result = coordinator.enqueue(appInstall) val result = enqueuer.enqueue(appInstall) assertTrue(result) assertTrue(appEventDispatcher.events.any { Loading @@ -221,7 +221,7 @@ class AppInstallStartCoordinatorTest { ) } throws InternalException.AppNotPurchased() val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) assertTrue(appEventDispatcher.events.any { it is AppEvent.AppRestrictedOrUnavailable }) Loading @@ -240,7 +240,7 @@ class AppInstallStartCoordinatorTest { ) } throws InternalException.AppNotPurchased() val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) coVerify { appManagerWrapper.addFusedDownloadPurchaseNeeded(appInstall) } Loading @@ -259,7 +259,7 @@ class AppInstallStartCoordinatorTest { ) } throws GplayHttpRequestException(403, "forbidden") val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) assertTrue(appEventDispatcher.events.none { it is AppEvent.UpdateEvent }) Loading @@ -280,7 +280,7 @@ class AppInstallStartCoordinatorTest { ) } throws GplayHttpRequestException(403, "forbidden") val result = coordinator.canEnqueue(appInstall, true) val result = enqueuer.canEnqueue(appInstall, true) assertFalse(result) assertTrue(appEventDispatcher.events.any { it is AppEvent.UpdateEvent }) Loading @@ -301,7 +301,7 @@ class AppInstallStartCoordinatorTest { ) } throws IllegalStateException("boom") val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) coVerify { appInstallRepository.addDownload(appInstall) } Loading Loading
app/src/main/java/foundation/e/apps/data/install/core/AppInstallProcessor.kt +3 −3 Original line number Diff line number Diff line Loading @@ -23,14 +23,14 @@ import foundation.e.apps.data.enums.ResultStatus import foundation.e.apps.data.install.AppInstallComponents import foundation.e.apps.data.install.models.AppInstall import foundation.e.apps.data.install.core.helper.InstallationRequest import foundation.e.apps.data.install.core.helper.AppInstallStartCoordinator import foundation.e.apps.data.install.core.helper.InstallationEnqueuer import foundation.e.apps.data.install.core.helper.AppInstallWorkRunner import foundation.e.apps.domain.model.install.Status import javax.inject.Inject class AppInstallProcessor @Inject constructor( private val appInstallComponents: AppInstallComponents, private val appInstallStartCoordinator: AppInstallStartCoordinator, private val installationEnqueuer: InstallationEnqueuer, private val appInstallWorkRunner: AppInstallWorkRunner, private val installationRequest: InstallationRequest, ) { Loading Loading @@ -65,7 +65,7 @@ class AppInstallProcessor @Inject constructor( isAnUpdate: Boolean = false, isSystemApp: Boolean = false ): Boolean { return appInstallStartCoordinator.enqueue(appInstall, isAnUpdate, isSystemApp) return installationEnqueuer.enqueue(appInstall, isAnUpdate, isSystemApp) } suspend fun processInstall( Loading
app/src/main/java/foundation/e/apps/data/install/core/helper/AppInstallStartCoordinator.kt→app/src/main/java/foundation/e/apps/data/install/core/helper/InstallationEnqueuer.kt +1 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ import kotlinx.coroutines.CancellationException import timber.log.Timber import javax.inject.Inject class AppInstallStartCoordinator @Inject constructor( class InstallationEnqueuer @Inject constructor( @ApplicationContext private val context: Context, private val preEnqueueChecker: PreEnqueueChecker, private val appManagerWrapper: AppManagerWrapper, Loading
app/src/test/java/foundation/e/apps/installProcessor/AppInstallProcessorTest.kt +8 −8 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ import foundation.e.apps.data.install.AppManagerWrapper import foundation.e.apps.data.install.models.AppInstall import foundation.e.apps.data.install.core.AppInstallProcessor import foundation.e.apps.data.install.core.helper.InstallationRequest import foundation.e.apps.data.install.core.helper.AppInstallStartCoordinator import foundation.e.apps.data.install.core.helper.InstallationEnqueuer import foundation.e.apps.data.install.core.helper.AppInstallWorkRunner import foundation.e.apps.util.MainCoroutineRule import io.mockk.coEvery Loading @@ -56,7 +56,7 @@ class AppInstallProcessorTest { private lateinit var appManagerWrapper: AppManagerWrapper private lateinit var appInstallProcessor: AppInstallProcessor private lateinit var installationRequest: InstallationRequest private lateinit var appInstallStartCoordinator: AppInstallStartCoordinator private lateinit var installationEnqueuer: InstallationEnqueuer private lateinit var appInstallWorkRunner: AppInstallWorkRunner @Before Loading @@ -65,12 +65,12 @@ class AppInstallProcessorTest { val appInstallRepository = mockk<AppInstallRepository>(relaxed = true) val appInstallComponents = AppInstallComponents(appInstallRepository, appManagerWrapper) installationRequest = mockk(relaxed = true) appInstallStartCoordinator = mockk(relaxed = true) installationEnqueuer = mockk(relaxed = true) appInstallWorkRunner = mockk(relaxed = true) appInstallProcessor = AppInstallProcessor( appInstallComponents, appInstallStartCoordinator, installationEnqueuer, appInstallWorkRunner, installationRequest ) Loading @@ -90,7 +90,7 @@ class AppInstallProcessorTest { coEvery { installationRequest.create(application) } returns appInstall coEvery { appManagerWrapper.isFusedDownloadInstalled(appInstall) } returns false coEvery { appInstallStartCoordinator.enqueue( installationEnqueuer.enqueue( appInstall, true, application.isSystemApp Loading @@ -101,18 +101,18 @@ class AppInstallProcessorTest { assertTrue(result) coVerify { installationRequest.create(application) } coVerify { appInstallStartCoordinator.enqueue(appInstall, true, application.isSystemApp) } coVerify { installationEnqueuer.enqueue(appInstall, true, application.isSystemApp) } } @Test fun enqueueFusedDownload_delegatesResult() = runTest { val appInstall = AppInstall(id = "123", packageName = "com.example.app") coEvery { appInstallStartCoordinator.enqueue(appInstall, true, true) } returns false coEvery { installationEnqueuer.enqueue(appInstall, true, true) } returns false val result = appInstallProcessor.enqueueFusedDownload(appInstall, true, true) assertEquals(false, result) coVerify { appInstallStartCoordinator.enqueue(appInstall, true, true) } coVerify { installationEnqueuer.enqueue(appInstall, true, true) } } @Test Loading
app/src/test/java/foundation/e/apps/installProcessor/AppInstallStartCoordinatorTest.kt→app/src/test/java/foundation/e/apps/installProcessor/InstallationEnqueuerTest.kt +14 −14 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ import foundation.e.apps.data.install.core.helper.AgeLimitGate import foundation.e.apps.data.install.core.helper.DevicePreconditions import foundation.e.apps.data.install.core.helper.DownloadUrlRefresher import foundation.e.apps.data.install.core.helper.PreEnqueueChecker import foundation.e.apps.data.install.core.helper.AppInstallStartCoordinator import foundation.e.apps.data.install.core.helper.InstallationEnqueuer import foundation.e.apps.data.install.workmanager.InstallWorkManager import foundation.e.apps.data.install.wrapper.NetworkStatusChecker import foundation.e.apps.data.install.wrapper.StorageSpaceChecker Loading @@ -60,7 +60,7 @@ import org.junit.Before import org.junit.Test @OptIn(ExperimentalCoroutinesApi::class) class AppInstallStartCoordinatorTest { class InstallationEnqueuerTest { private lateinit var context: Context private lateinit var appManagerWrapper: AppManagerWrapper private lateinit var applicationRepository: ApplicationRepository Loading @@ -76,7 +76,7 @@ class AppInstallStartCoordinatorTest { private lateinit var devicePreconditions: DevicePreconditions private lateinit var downloadUrlRefresher: DownloadUrlRefresher private lateinit var preflightChecker: PreEnqueueChecker private lateinit var coordinator: AppInstallStartCoordinator private lateinit var enqueuer: InstallationEnqueuer @Before fun setup() { Loading Loading @@ -114,7 +114,7 @@ class AppInstallStartCoordinatorTest { ageLimitGate, devicePreconditions ) coordinator = AppInstallStartCoordinator( enqueuer = InstallationEnqueuer( context, preflightChecker, appManagerWrapper, Loading @@ -133,7 +133,7 @@ class AppInstallStartCoordinatorTest { every { networkStatusChecker.isNetworkAvailable() } returns true every { storageSpaceChecker.spaceMissing(appInstall) } returns 0L val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertTrue(result) } Loading @@ -147,7 +147,7 @@ class AppInstallStartCoordinatorTest { every { networkStatusChecker.isNetworkAvailable() } returns false every { storageSpaceChecker.spaceMissing(appInstall) } returns 0L val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) coVerify { appManagerWrapper.installationIssue(appInstall) } Loading @@ -162,7 +162,7 @@ class AppInstallStartCoordinatorTest { every { networkStatusChecker.isNetworkAvailable() } returns true every { storageSpaceChecker.spaceMissing(appInstall) } returns 100L val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) verify { storageNotificationManager.showNotEnoughSpaceNotification(appInstall) } Loading @@ -175,7 +175,7 @@ class AppInstallStartCoordinatorTest { coEvery { appManagerWrapper.addDownload(appInstall) } returns false val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) coVerify(exactly = 0) { ageLimitGate.allow(any()) } Loading @@ -197,7 +197,7 @@ class AppInstallStartCoordinatorTest { every { storageSpaceChecker.spaceMissing(appInstall) } returns 0L justRun { InstallWorkManager.enqueueWork(any(), any(), any()) } val result = coordinator.enqueue(appInstall) val result = enqueuer.enqueue(appInstall) assertTrue(result) assertTrue(appEventDispatcher.events.any { Loading @@ -221,7 +221,7 @@ class AppInstallStartCoordinatorTest { ) } throws InternalException.AppNotPurchased() val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) assertTrue(appEventDispatcher.events.any { it is AppEvent.AppRestrictedOrUnavailable }) Loading @@ -240,7 +240,7 @@ class AppInstallStartCoordinatorTest { ) } throws InternalException.AppNotPurchased() val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) coVerify { appManagerWrapper.addFusedDownloadPurchaseNeeded(appInstall) } Loading @@ -259,7 +259,7 @@ class AppInstallStartCoordinatorTest { ) } throws GplayHttpRequestException(403, "forbidden") val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) assertTrue(appEventDispatcher.events.none { it is AppEvent.UpdateEvent }) Loading @@ -280,7 +280,7 @@ class AppInstallStartCoordinatorTest { ) } throws GplayHttpRequestException(403, "forbidden") val result = coordinator.canEnqueue(appInstall, true) val result = enqueuer.canEnqueue(appInstall, true) assertFalse(result) assertTrue(appEventDispatcher.events.any { it is AppEvent.UpdateEvent }) Loading @@ -301,7 +301,7 @@ class AppInstallStartCoordinatorTest { ) } throws IllegalStateException("boom") val result = coordinator.canEnqueue(appInstall) val result = enqueuer.canEnqueue(appInstall) assertFalse(result) coVerify { appInstallRepository.addDownload(appInstall) } Loading