Introducing FakeWorkManager
This commit is contained in:
parent
b9b1e2b397
commit
e3981f42e9
@ -16,8 +16,7 @@
|
|||||||
|
|
||||||
package org.matrix.android.sdk.internal.session.room.aggregation.livelocation
|
package org.matrix.android.sdk.internal.session.room.aggregation.livelocation
|
||||||
|
|
||||||
import androidx.work.OneTimeWorkRequest
|
import androidx.work.ExistingWorkPolicy
|
||||||
import io.mockk.verify
|
|
||||||
import org.amshove.kluent.shouldBeEqualTo
|
import org.amshove.kluent.shouldBeEqualTo
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.matrix.android.sdk.api.session.events.model.Event
|
import org.matrix.android.sdk.api.session.events.model.Event
|
||||||
@ -164,6 +163,7 @@ internal class LiveLocationAggregationProcessorTest {
|
|||||||
timeout = A_TIMEOUT_MILLIS
|
timeout = A_TIMEOUT_MILLIS
|
||||||
)
|
)
|
||||||
fakeClock.givenEpoch(A_TIMESTAMP + 5000)
|
fakeClock.givenEpoch(A_TIMESTAMP + 5000)
|
||||||
|
fakeWorkManagerProvider.fakeWorkManager.expectEnqueueUniqueWork()
|
||||||
val aggregatedEntity = mockLiveLocationShareAggregatedSummaryEntityForEvent()
|
val aggregatedEntity = mockLiveLocationShareAggregatedSummaryEntityForEvent()
|
||||||
val previousEntities = mockPreviousLiveLocationShareAggregatedSummaryEntities()
|
val previousEntities = mockPreviousLiveLocationShareAggregatedSummaryEntities()
|
||||||
|
|
||||||
@ -185,8 +185,10 @@ internal class LiveLocationAggregationProcessorTest {
|
|||||||
previousEntities.forEach { entity ->
|
previousEntities.forEach { entity ->
|
||||||
entity.isActive shouldBeEqualTo false
|
entity.isActive shouldBeEqualTo false
|
||||||
}
|
}
|
||||||
val workManager = fakeWorkManagerProvider.instance.workManager
|
fakeWorkManagerProvider.fakeWorkManager.verifyEnqueueUniqueWork(
|
||||||
verify { workManager.enqueueUniqueWork(any(), any(), any<OneTimeWorkRequest>()) }
|
workName = DeactivateLiveLocationShareWorker.getWorkName(eventId = AN_EVENT_ID, roomId = A_ROOM_ID),
|
||||||
|
policy = ExistingWorkPolicy.REPLACE
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -206,6 +208,7 @@ internal class LiveLocationAggregationProcessorTest {
|
|||||||
timeout = A_TIMEOUT_MILLIS
|
timeout = A_TIMEOUT_MILLIS
|
||||||
)
|
)
|
||||||
fakeClock.givenEpoch(A_TIMESTAMP + 5000)
|
fakeClock.givenEpoch(A_TIMESTAMP + 5000)
|
||||||
|
fakeWorkManagerProvider.fakeWorkManager.expectCancelUniqueWork()
|
||||||
val aggregatedEntity = mockLiveLocationShareAggregatedSummaryEntityForEvent()
|
val aggregatedEntity = mockLiveLocationShareAggregatedSummaryEntityForEvent()
|
||||||
val previousEntities = mockPreviousLiveLocationShareAggregatedSummaryEntities()
|
val previousEntities = mockPreviousLiveLocationShareAggregatedSummaryEntities()
|
||||||
|
|
||||||
@ -227,8 +230,9 @@ internal class LiveLocationAggregationProcessorTest {
|
|||||||
previousEntities.forEach { entity ->
|
previousEntities.forEach { entity ->
|
||||||
entity.isActive shouldBeEqualTo false
|
entity.isActive shouldBeEqualTo false
|
||||||
}
|
}
|
||||||
val workManager = fakeWorkManagerProvider.instance.workManager
|
fakeWorkManagerProvider.fakeWorkManager.verifyCancelUniqueWork(
|
||||||
verify { workManager.cancelUniqueWork(any()) }
|
workName = DeactivateLiveLocationShareWorker.getWorkName(eventId = AN_EVENT_ID, roomId = A_ROOM_ID)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2022 The Matrix.org Foundation C.I.C.
|
||||||
|
*
|
||||||
|
* 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 org.matrix.android.sdk.test.fakes
|
||||||
|
|
||||||
|
import androidx.work.ExistingWorkPolicy
|
||||||
|
import androidx.work.OneTimeWorkRequest
|
||||||
|
import androidx.work.WorkManager
|
||||||
|
import io.mockk.every
|
||||||
|
import io.mockk.mockk
|
||||||
|
import io.mockk.verify
|
||||||
|
|
||||||
|
class FakeWorkManager {
|
||||||
|
|
||||||
|
val instance = mockk<WorkManager>()
|
||||||
|
|
||||||
|
fun expectEnqueueUniqueWork() {
|
||||||
|
every { instance.enqueueUniqueWork(any(), any(), any<OneTimeWorkRequest>()) } returns mockk()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun verifyEnqueueUniqueWork(workName: String, policy: ExistingWorkPolicy) {
|
||||||
|
verify { instance.enqueueUniqueWork(workName, policy, any<OneTimeWorkRequest>()) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun expectCancelUniqueWork() {
|
||||||
|
every { instance.cancelUniqueWork(any()) } returns mockk()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun verifyCancelUniqueWork(workName: String) {
|
||||||
|
verify { instance.cancelUniqueWork(workName) }
|
||||||
|
}
|
||||||
|
}
|
@ -16,20 +16,15 @@
|
|||||||
|
|
||||||
package org.matrix.android.sdk.test.fakes
|
package org.matrix.android.sdk.test.fakes
|
||||||
|
|
||||||
import androidx.work.OneTimeWorkRequest
|
|
||||||
import androidx.work.WorkManager
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import org.matrix.android.sdk.internal.di.WorkManagerProvider
|
import org.matrix.android.sdk.internal.di.WorkManagerProvider
|
||||||
|
|
||||||
internal class FakeWorkManagerProvider {
|
internal class FakeWorkManagerProvider(
|
||||||
|
val fakeWorkManager: FakeWorkManager = FakeWorkManager(),
|
||||||
|
) {
|
||||||
|
|
||||||
val instance = mockk<WorkManagerProvider>()
|
val instance = mockk<WorkManagerProvider>().also {
|
||||||
|
every { it.workManager } returns fakeWorkManager.instance
|
||||||
init {
|
|
||||||
val workManager = mockk<WorkManager>()
|
|
||||||
every { workManager.enqueueUniqueWork(any(), any(), any<OneTimeWorkRequest>()) } returns mockk()
|
|
||||||
every { workManager.cancelUniqueWork(any()) } returns mockk()
|
|
||||||
every { instance.workManager } returns workManager
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user