diff --git a/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/session/room/aggregation/livelocation/LiveLocationAggregationProcessorTest.kt b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/session/room/aggregation/livelocation/LiveLocationAggregationProcessorTest.kt index b6e5ea8479..646a2194e1 100644 --- a/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/session/room/aggregation/livelocation/LiveLocationAggregationProcessorTest.kt +++ b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/internal/session/room/aggregation/livelocation/LiveLocationAggregationProcessorTest.kt @@ -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()) } + 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 diff --git a/matrix-sdk-android/src/test/java/org/matrix/android/sdk/test/fakes/FakeWorkManager.kt b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/test/fakes/FakeWorkManager.kt new file mode 100644 index 0000000000..b29d015a43 --- /dev/null +++ b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/test/fakes/FakeWorkManager.kt @@ -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() + + fun expectEnqueueUniqueWork() { + every { instance.enqueueUniqueWork(any(), any(), any()) } returns mockk() + } + + fun verifyEnqueueUniqueWork(workName: String, policy: ExistingWorkPolicy) { + verify { instance.enqueueUniqueWork(workName, policy, any()) } + } + + fun expectCancelUniqueWork() { + every { instance.cancelUniqueWork(any()) } returns mockk() + } + + fun verifyCancelUniqueWork(workName: String) { + verify { instance.cancelUniqueWork(workName) } + } +} diff --git a/matrix-sdk-android/src/test/java/org/matrix/android/sdk/test/fakes/FakeWorkManagerProvider.kt b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/test/fakes/FakeWorkManagerProvider.kt index b6b435f531..51ff24c01d 100644 --- a/matrix-sdk-android/src/test/java/org/matrix/android/sdk/test/fakes/FakeWorkManagerProvider.kt +++ b/matrix-sdk-android/src/test/java/org/matrix/android/sdk/test/fakes/FakeWorkManagerProvider.kt @@ -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() - - init { - val workManager = mockk() - every { workManager.enqueueUniqueWork(any(), any(), any()) } returns mockk() - every { workManager.cancelUniqueWork(any()) } returns mockk() - every { instance.workManager } returns workManager + val instance = mockk().also { + every { it.workManager } returns fakeWorkManager.instance } }