@@ -3,6 +3,10 @@ package com.hoc.flowmvi.domain
3
3
import com.hoc.flowmvi.domain.entity.User
4
4
import com.hoc.flowmvi.domain.repository.UserRepository
5
5
import com.hoc.flowmvi.domain.usecase.GetUsersUseCase
6
+ import com.hoc.flowmvi.domain.usecase.RefreshGetUsersUseCase
7
+ import com.hoc.flowmvi.domain.usecase.RemoveUserUseCase
8
+ import io.mockk.coEvery
9
+ import io.mockk.coVerify
6
10
import io.mockk.every
7
11
import io.mockk.mockk
8
12
import io.mockk.verify
@@ -12,6 +16,7 @@ import kotlinx.coroutines.flow.flow
12
16
import kotlinx.coroutines.flow.flowOf
13
17
import kotlinx.coroutines.test.TestCoroutineDispatcher
14
18
import kotlinx.coroutines.test.runBlockingTest
19
+ import java.io.IOException
15
20
import kotlin.test.Test
16
21
import kotlin.test.assertEquals
17
22
import kotlin.test.assertFailsWith
@@ -46,6 +51,8 @@ class UseCaseTest {
46
51
47
52
private val userRepository: UserRepository = mockk(relaxed = true )
48
53
private val getUsersUseCase: GetUsersUseCase = GetUsersUseCase (userRepository)
54
+ private val refreshUseCase: RefreshGetUsersUseCase = RefreshGetUsersUseCase (userRepository)
55
+ private val removeUserUseCase: RemoveUserUseCase = RemoveUserUseCase (userRepository)
49
56
50
57
@Test
51
58
fun test_getUsersUseCase_whenSuccess_emitsUsers () = testDispatcher.runBlockingTest {
@@ -66,4 +73,42 @@ class UseCaseTest {
66
73
verify { userRepository.getUsers() }
67
74
assertFailsWith<Exception > { result.first() }
68
75
}
76
+
77
+ @Test
78
+ fun test_refreshUseCase_whenSuccess_returnsUnit () = testDispatcher.runBlockingTest {
79
+ coEvery { userRepository.refresh() } returns Unit
80
+
81
+ val result = refreshUseCase()
82
+
83
+ coVerify { userRepository.refresh() }
84
+ assertEquals(Unit , result)
85
+ }
86
+
87
+ @Test
88
+ fun test_refreshUseCase_whenError_throwsError () = testDispatcher.runBlockingTest {
89
+ coEvery { userRepository.refresh() } throws IOException ()
90
+
91
+ assertFailsWith<IOException > { refreshUseCase() }
92
+
93
+ coVerify { userRepository.refresh() }
94
+ }
95
+
96
+ @Test
97
+ fun test_removeUserUseCase_whenSuccess_returnsUnit () = testDispatcher.runBlockingTest {
98
+ coEvery { userRepository.remove(any()) } returns Unit
99
+
100
+ val result = removeUserUseCase(USERS [0 ])
101
+
102
+ coVerify { userRepository.remove(USERS [0 ]) }
103
+ assertEquals(Unit , result)
104
+ }
105
+
106
+ @Test
107
+ fun test_removeUserUseCase_whenError_throwsError () = testDispatcher.runBlockingTest {
108
+ coEvery { userRepository.remove(any()) } throws IOException ()
109
+
110
+ assertFailsWith<IOException > { removeUserUseCase(USERS [0 ]) }
111
+
112
+ coVerify { userRepository.remove(USERS [0 ]) }
113
+ }
69
114
}
0 commit comments