Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Verified Commit a5f3398b authored by Fahim M. Choudhury's avatar Fahim M. Choudhury
Browse files

refactor: align InstallWorkManager API and Robolectric SDK level

Use the current InstallWorkManager API and Robolectric SDK level so the rebased workmanager changes stay compatible and validation passes.
parent 4c8008cf
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -34,11 +34,7 @@ import foundation.e.apps.data.install.AppInstallDAO
import foundation.e.apps.data.install.pkg.AppLoungePackageManager
import foundation.e.apps.data.install.pkg.PkgManagerBR
import foundation.e.apps.data.install.updates.UpdatesWorkManager
import foundation.e.apps.data.install.workmanager.InstallHelper
import foundation.e.apps.data.install.workmanager.InstallOrchestrator
import foundation.e.apps.data.install.workmanager.InstallWorkManager
import foundation.e.apps.data.preference.AppLoungeDataStore
import foundation.e.apps.data.preference.AppLoungePreference
import foundation.e.apps.data.system.CustomUncaughtExceptionHandler
import foundation.e.apps.domain.preferences.SessionRepository
import foundation.e.apps.domain.preferences.updateinterval.GetUpdateIntervalUseCase
+1 −1
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ class InstallOrchestrator @Inject constructor(
        val uniqueWorkName = InstallWorkManager.getUniqueWorkName(download.packageName)

        runCatching {
            val operation = InstallWorkManager.enqueueWork(download, false)
            val operation = InstallWorkManager.enqueueWork(context, download, false)
            operation.await()
            Timber.d("INSTALL: Successfully enqueued unique work for ${download.name}: $uniqueWorkName")
        }.onFailure { throwable ->
+1 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ import java.util.UUID
import java.util.concurrent.TimeUnit

@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.N])
@Config(sdk = [Build.VERSION_CODES.R])
class UpdatesWorkManagerTest {

    private lateinit var context: Application
+9 −10
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ import java.util.UUID
import java.util.concurrent.TimeUnit

@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.N])
@Config(sdk = [Build.VERSION_CODES.R])
class InstallWorkManagerTest {

    private lateinit var context: Application
@@ -53,7 +53,6 @@ class InstallWorkManagerTest {
    fun setup() {
        context = ApplicationProvider.getApplicationContext()
        WorkManagerTestInitHelper.initializeTestWorkManager(context)
        InstallWorkManager.context = context
        workManager = WorkManager.getInstance(context)
        workManager.cancelAllWork().result.get()
    }
@@ -68,7 +67,7 @@ class InstallWorkManagerTest {
    fun enqueueWork_buildsExpectedRequestForInstall() {
        val appInstall = AppInstall(id = "id.install", packageName = "foundation.e.install")

        InstallWorkManager.enqueueWork(appInstall).result.get()
        InstallWorkManager.enqueueWork(context, appInstall).result.get()

        val uniqueWorkName = InstallWorkManager.getUniqueWorkName(appInstall.packageName)
        val workInfo = workManager.getWorkInfosForUniqueWork(uniqueWorkName).get().single()
@@ -86,7 +85,7 @@ class InstallWorkManagerTest {
    fun enqueueWork_setsUpdateFlagWhenRequested() {
        val appInstall = AppInstall(id = "id.update", packageName = "foundation.e.update")

        InstallWorkManager.enqueueWork(appInstall, isUpdateWork = true).result.get()
        InstallWorkManager.enqueueWork(context, appInstall, isUpdateWork = true).result.get()

        val uniqueWorkName = InstallWorkManager.getUniqueWorkName(appInstall.packageName)
        val workInfo = workManager.getWorkInfosForUniqueWork(uniqueWorkName).get().single()
@@ -105,7 +104,7 @@ class InstallWorkManagerTest {

        workManager.enqueue(request).result.get()

        InstallWorkManager.cancelWork(tag)
        InstallWorkManager.cancelWork(context, tag)

        val state = waitUntilFinished(request.id)
        assertThat(state).isEqualTo(WorkInfo.State.CANCELLED)
@@ -121,7 +120,7 @@ class InstallWorkManagerTest {

        workManager.enqueue(request).result.get()

        assertThat(InstallWorkManager.checkWorkIsAlreadyAvailable(tag)).isTrue()
        assertThat(InstallWorkManager.checkWorkIsAlreadyAvailable(context, tag)).isTrue()
    }

    @Test
@@ -133,22 +132,22 @@ class InstallWorkManagerTest {
            .build()

        workManager.enqueue(request).result.get()
        InstallWorkManager.cancelWork(tag)
        InstallWorkManager.cancelWork(context, tag)
        waitUntilFinished(request.id)

        assertThat(InstallWorkManager.checkWorkIsAlreadyAvailable(tag)).isFalse()
        assertThat(InstallWorkManager.checkWorkIsAlreadyAvailable(context, tag)).isFalse()
    }

    @Test
    fun checkWorkIsAlreadyAvailable_returnsFalseWhenNoWorkExistsForTag() {
        assertThat(InstallWorkManager.checkWorkIsAlreadyAvailable("id.missing")).isFalse()
        assertThat(InstallWorkManager.checkWorkIsAlreadyAvailable(context, "id.missing")).isFalse()
    }

    @Test
    fun checkWorkIsAlreadyAvailable_returnsFalseWhenThreadIsInterrupted() {
        Thread.currentThread().interrupt()

        val result = InstallWorkManager.checkWorkIsAlreadyAvailable("id.interrupted")
        val result = InstallWorkManager.checkWorkIsAlreadyAvailable(context, "id.interrupted")

        assertThat(result).isFalse()
        assertThat(Thread.currentThread().isInterrupted).isFalse()
+7 −7
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ import java.util.concurrent.TimeUnit

@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [Build.VERSION_CODES.N])
@Config(sdk = [Build.VERSION_CODES.R])
class InstallOrchestratorTest {

    @get:Rule
@@ -160,7 +160,7 @@ class InstallOrchestratorTest {
        installOrchestrator.init()
        advanceUntilIdle()

        verify(exactly = 1) { InstallWorkManager.enqueueWork(awaiting, false) }
        verify(exactly = 1) { InstallWorkManager.enqueueWork(context, awaiting, false) }
    }

    @Test
@@ -177,7 +177,7 @@ class InstallOrchestratorTest {
        installOrchestrator.init()
        advanceUntilIdle()

        verify(exactly = 0) { InstallWorkManager.enqueueWork(any(), any()) }
        verify(exactly = 0) { InstallWorkManager.enqueueWork(any(), any(), any()) }
    }

    @Test
@@ -260,7 +260,7 @@ class InstallOrchestratorTest {
        installOrchestrator.init()
        advanceUntilIdle()

        verify(exactly = 1) { InstallWorkManager.enqueueWork(awaiting, false) }
        verify(exactly = 1) { InstallWorkManager.enqueueWork(context, awaiting, false) }
    }

    @Test
@@ -279,21 +279,21 @@ class InstallOrchestratorTest {
        mockkObject(InstallWorkManager)
        isInstallWorkManagerMocked = true
        every { InstallWorkManager.getUniqueWorkName(any()) } answers { callOriginal() }
        every { InstallWorkManager.enqueueWork(any(), any()) } returns successfulOperation()
        every { InstallWorkManager.enqueueWork(any(), any(), any()) } returns successfulOperation()
    }

    private fun mockInstallWorkManagerFailure() {
        mockkObject(InstallWorkManager)
        isInstallWorkManagerMocked = true
        every { InstallWorkManager.getUniqueWorkName(any()) } answers { callOriginal() }
        every { InstallWorkManager.enqueueWork(any(), any()) } throws RuntimeException("enqueue failed")
        every { InstallWorkManager.enqueueWork(any(), any(), any()) } throws RuntimeException("enqueue failed")
    }

    private fun mockInstallWorkManagerCancellation() {
        mockkObject(InstallWorkManager)
        isInstallWorkManagerMocked = true
        every { InstallWorkManager.getUniqueWorkName(any()) } answers { callOriginal() }
        every { InstallWorkManager.enqueueWork(any(), any()) } throws CancellationException("enqueue cancelled")
        every { InstallWorkManager.enqueueWork(any(), any(), any()) } throws CancellationException("enqueue cancelled")
    }

    private fun successfulOperation(): Operation {
Loading