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
|
||||
|
||||
import androidx.work.OneTimeWorkRequest
|
||||
import io.mockk.verify
|
||||
import androidx.work.ExistingWorkPolicy
|
||||
import org.amshove.kluent.shouldBeEqualTo
|
||||
import org.junit.Test
|
||||
import org.matrix.android.sdk.api.session.events.model.Event
|
||||
@ -164,6 +163,7 @@ internal class LiveLocationAggregationProcessorTest {
|
||||
timeout = A_TIMEOUT_MILLIS
|
||||
)
|
||||
fakeClock.givenEpoch(A_TIMESTAMP + 5000)
|
||||
fakeWorkManagerProvider.fakeWorkManager.expectEnqueueUniqueWork()
|
||||
val aggregatedEntity = mockLiveLocationShareAggregatedSummaryEntityForEvent()
|
||||
val previousEntities = mockPreviousLiveLocationShareAggregatedSummaryEntities()
|
||||
|
||||
@ -185,8 +185,10 @@ internal class LiveLocationAggregationProcessorTest {
|
||||
previousEntities.forEach { entity ->
|
||||
entity.isActive shouldBeEqualTo false
|
||||
}
|
||||
val workManager = fakeWorkManagerProvider.instance.workManager
|
||||
verify { workManager.enqueueUniqueWork(any(), any(), any<OneTimeWorkRequest>()) }
|
||||
fakeWorkManagerProvider.fakeWorkManager.verifyEnqueueUniqueWork(
|
||||
workName = DeactivateLiveLocationShareWorker.getWorkName(eventId = AN_EVENT_ID, roomId = A_ROOM_ID),
|
||||
policy = ExistingWorkPolicy.REPLACE
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -206,6 +208,7 @@ internal class LiveLocationAggregationProcessorTest {
|
||||
timeout = A_TIMEOUT_MILLIS
|
||||
)
|
||||
fakeClock.givenEpoch(A_TIMESTAMP + 5000)
|
||||
fakeWorkManagerProvider.fakeWorkManager.expectCancelUniqueWork()
|
||||
val aggregatedEntity = mockLiveLocationShareAggregatedSummaryEntityForEvent()
|
||||
val previousEntities = mockPreviousLiveLocationShareAggregatedSummaryEntities()
|
||||
|
||||
@ -227,8 +230,9 @@ internal class LiveLocationAggregationProcessorTest {
|
||||
previousEntities.forEach { entity ->
|
||||
entity.isActive shouldBeEqualTo false
|
||||
}
|
||||
val workManager = fakeWorkManagerProvider.instance.workManager
|
||||
verify { workManager.cancelUniqueWork(any()) }
|
||||
fakeWorkManagerProvider.fakeWorkManager.verifyCancelUniqueWork(
|
||||
workName = DeactivateLiveLocationShareWorker.getWorkName(eventId = AN_EVENT_ID, roomId = A_ROOM_ID)
|
||||
)
|
||||
}
|
||||
|
||||
@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
|
||||
|
||||
import androidx.work.OneTimeWorkRequest
|
||||
import androidx.work.WorkManager
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import org.matrix.android.sdk.internal.di.WorkManagerProvider
|
||||
|
||||
internal class FakeWorkManagerProvider {
|
||||
internal class FakeWorkManagerProvider(
|
||||
val fakeWorkManager: FakeWorkManager = FakeWorkManager(),
|
||||
) {
|
||||
|
||||
val instance = mockk<WorkManagerProvider>()
|
||||
|
||||
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
|
||||
val instance = mockk<WorkManagerProvider>().also {
|
||||
every { it.workManager } returns fakeWorkManager.instance
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user