From 184a25b811a3939682ef754bd4583858874e5022 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL <46314705+mnaturel@users.noreply.github.com> Date: Tue, 24 Jan 2023 15:43:43 +0100 Subject: [PATCH] Adding unit tests for dispose methods --- .../polls/list/data/RoomPollRepository.kt | 1 - .../list/domain/DisposePollHistoryUseCase.kt | 4 -- .../polls/list/data/RoomPollRepositoryTest.kt | 13 ++++++ .../domain/DisposePollHistoryUseCaseTest.kt | 45 +++++++++++++++++++ 4 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 vector/src/test/java/im/vector/app/features/roomprofile/polls/list/domain/DisposePollHistoryUseCaseTest.kt diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/data/RoomPollRepository.kt b/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/data/RoomPollRepository.kt index d6dfe12435..d993302fb7 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/data/RoomPollRepository.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/data/RoomPollRepository.kt @@ -25,7 +25,6 @@ class RoomPollRepository @Inject constructor( private val roomPollDataSource: RoomPollDataSource, ) { - // TODO add unit tests fun dispose(roomId: String) { roomPollDataSource.dispose(roomId) } diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/domain/DisposePollHistoryUseCase.kt b/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/domain/DisposePollHistoryUseCase.kt index 4ed4e71501..f1cf031f73 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/domain/DisposePollHistoryUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/domain/DisposePollHistoryUseCase.kt @@ -17,16 +17,12 @@ package im.vector.app.features.roomprofile.polls.list.domain import im.vector.app.features.roomprofile.polls.list.data.RoomPollRepository -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.map -import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent import javax.inject.Inject class DisposePollHistoryUseCase @Inject constructor( private val roomPollRepository: RoomPollRepository, ) { - // TODO add unit tests fun execute(roomId: String) { roomPollRepository.dispose(roomId) } diff --git a/vector/src/test/java/im/vector/app/features/roomprofile/polls/list/data/RoomPollRepositoryTest.kt b/vector/src/test/java/im/vector/app/features/roomprofile/polls/list/data/RoomPollRepositoryTest.kt index 3883f0dafd..e57b52a812 100644 --- a/vector/src/test/java/im/vector/app/features/roomprofile/polls/list/data/RoomPollRepositoryTest.kt +++ b/vector/src/test/java/im/vector/app/features/roomprofile/polls/list/data/RoomPollRepositoryTest.kt @@ -20,6 +20,7 @@ import io.mockk.coEvery import io.mockk.coJustRun import io.mockk.coVerify import io.mockk.every +import io.mockk.justRun import io.mockk.mockk import io.mockk.verify import kotlinx.coroutines.flow.firstOrNull @@ -40,6 +41,18 @@ class RoomPollRepositoryTest { roomPollDataSource = fakeRoomPollDataSource, ) + @Test + fun `given data source when dispose then correct method of data source is called`() { + // Given + justRun { fakeRoomPollDataSource.dispose(A_ROOM_ID) } + + // When + roomPollRepository.dispose(A_ROOM_ID) + + // Then + verify { fakeRoomPollDataSource.dispose(A_ROOM_ID) } + } + @Test fun `given data source when getting polls then correct method of data source is called`() = runTest { // Given diff --git a/vector/src/test/java/im/vector/app/features/roomprofile/polls/list/domain/DisposePollHistoryUseCaseTest.kt b/vector/src/test/java/im/vector/app/features/roomprofile/polls/list/domain/DisposePollHistoryUseCaseTest.kt new file mode 100644 index 0000000000..0063d9bfd5 --- /dev/null +++ b/vector/src/test/java/im/vector/app/features/roomprofile/polls/list/domain/DisposePollHistoryUseCaseTest.kt @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * 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 im.vector.app.features.roomprofile.polls.list.domain + +import im.vector.app.features.roomprofile.polls.list.data.RoomPollRepository +import io.mockk.coVerify +import io.mockk.justRun +import io.mockk.mockk +import org.junit.Test + +internal class DisposePollHistoryUseCaseTest { + + private val fakeRoomPollRepository = mockk() + + private val disposePollHistoryUseCase = DisposePollHistoryUseCase( + roomPollRepository = fakeRoomPollRepository, + ) + + @Test + fun `given repo when execute then correct method of repo is called`() { + // Given + val aRoomId = "roomId" + justRun { fakeRoomPollRepository.dispose(aRoomId) } + + // When + disposePollHistoryUseCase.execute(aRoomId) + + // Then + coVerify { fakeRoomPollRepository.dispose(aRoomId) } + } +}