Skip to content

Commit 65a05f1

Browse files
committed
refactor: rename getUsers to observeUsers for clarity and consistency
1 parent e32fcb5 commit 65a05f1

File tree

11 files changed

+34
-33
lines changed

11 files changed

+34
-33
lines changed

.idea/kotlinc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/src/main/java/com/hoc/flowmvi/core/selfReference.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import kotlin.reflect.KProperty
1111
value class SelfReference<T>(
1212
val value: T,
1313
) : ReadOnlyProperty<Any?, T> {
14-
override fun getValue(
14+
@Suppress("OVERRIDE_BY_INLINE", "NOTHING_TO_INLINE")
15+
override inline fun getValue(
1516
thisRef: Any?,
1617
property: KProperty<*>,
1718
): T = value

data/src/main/java/com/hoc/flowmvi/data/UserRepositoryImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ internal class UserRepositoryImpl(
8080
.first()
8181

8282
@OptIn(FlowExtPreview::class)
83-
override fun getUsers() =
83+
override fun observeUsers() =
8484
changesFlow
8585
.onEach { Timber.d("[USER_REPO] Change=$it") }
8686
.scanWith(::getUsersFromRemoteWithRetry) { acc, change ->

data/src/test/java/com/hoc/flowmvi/data/UserRepositoryImplRealAPITest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@ class UserRepositoryImplRealAPITest : KoinTest {
5656
private val userRepo by inject<UserRepository>()
5757

5858
@Test
59-
fun getUsers() =
59+
fun observeUsers() =
6060
runBlocking {
6161
kotlin.runCatching {
6262
val result =
6363
userRepo
64-
.getUsers()
64+
.observeUsers()
6565
.first()
6666
assertTrue(result.isRight())
6767
assertTrue(result.rightValueOrThrow.isNotEmpty())

data/src/test/java/com/hoc/flowmvi/data/UserRepositoryImplTest.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -285,15 +285,15 @@ class UserRepositoryImplTest {
285285
}
286286

287287
@Test
288-
fun test_getUsers_withApiCallSuccess_emitsInitial() =
288+
fun test_observeUsers_withApiCallSuccess_emitsInitial() =
289289
runTest {
290290
coEvery { userApiService.getUsers() } returns USER_RESPONSES
291291
every { responseToDomain(any()) } returnsMany VALID_NES_USERS
292292

293293
val events = mutableListOf<Either<UserError, List<User>>>()
294294
val job =
295295
launch(start = CoroutineStart.UNDISPATCHED) {
296-
repo.getUsers().toList(events)
296+
repo.observeUsers().toList(events)
297297
}
298298
delay(5_000)
299299
job.cancel()
@@ -313,15 +313,15 @@ class UserRepositoryImplTest {
313313
}
314314

315315
@Test
316-
fun test_getUsers_withApiCallError_rethrows() =
316+
fun test_observeUsers_withApiCallError_rethrows() =
317317
runTest {
318318
coEvery { userApiService.getUsers() } throws IOException()
319319
every { errorMapper(ofType<IOException>()) } returns UserError.NetworkError
320320

321321
val events = mutableListOf<Either<UserError, List<User>>>()
322322
val job =
323323
launch(start = CoroutineStart.UNDISPATCHED) {
324-
repo.getUsers().toList(events)
324+
repo.observeUsers().toList(events)
325325
}
326326
delay(20_000)
327327
job.cancel()
@@ -337,7 +337,7 @@ class UserRepositoryImplTest {
337337
}
338338

339339
@Test
340-
fun test_getUsers_withApiCallSuccess_emitsInitialAndUpdatedUsers() =
340+
fun test_observeUsers_withApiCallSuccess_emitsInitialAndUpdatedUsers() =
341341
runTest {
342342
val user = USERS.last()
343343
val userResponse = USER_RESPONSES.last()
@@ -352,7 +352,7 @@ class UserRepositoryImplTest {
352352
val events = mutableListOf<Either<UserError, List<User>>>()
353353
val job =
354354
launch(start = CoroutineStart.UNDISPATCHED) {
355-
repo.getUsers().toList(events)
355+
repo.observeUsers().toList(events)
356356
}
357357
repo.add(user)
358358
repo.remove(user)

domain/src/main/java/com/hoc/flowmvi/domain/DomainModule.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.hoc.flowmvi.domain
22

33
import com.hoc.flowmvi.domain.usecase.AddUserUseCase
4-
import com.hoc.flowmvi.domain.usecase.GetUsersUseCase
4+
import com.hoc.flowmvi.domain.usecase.ObserveUsersUseCase
55
import com.hoc.flowmvi.domain.usecase.RefreshGetUsersUseCase
66
import com.hoc.flowmvi.domain.usecase.RemoveUserUseCase
77
import com.hoc.flowmvi.domain.usecase.SearchUsersUseCase
@@ -11,7 +11,7 @@ import org.koin.dsl.module
1111
@JvmField
1212
val domainModule =
1313
module {
14-
factoryOf(::GetUsersUseCase)
14+
factoryOf(::ObserveUsersUseCase)
1515

1616
factoryOf(::RefreshGetUsersUseCase)
1717

domain/src/main/java/com/hoc/flowmvi/domain/repository/UserRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.hoc.flowmvi.domain.model.UserError
66
import kotlinx.coroutines.flow.Flow
77

88
interface UserRepository {
9-
fun getUsers(): Flow<Either<UserError, List<User>>>
9+
fun observeUsers(): Flow<Either<UserError, List<User>>>
1010

1111
suspend fun refresh(): Either<UserError, Unit>
1212

domain/src/main/java/com/hoc/flowmvi/domain/usecase/GetUsersUseCase.kt renamed to domain/src/main/java/com/hoc/flowmvi/domain/usecase/ObserveUsersUseCase.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import com.hoc.flowmvi.domain.model.UserError
66
import com.hoc.flowmvi.domain.repository.UserRepository
77
import kotlinx.coroutines.flow.Flow
88

9-
class GetUsersUseCase(
9+
class ObserveUsersUseCase(
1010
private val userRepository: UserRepository,
1111
) {
12-
operator fun invoke(): Flow<Either<UserError, List<User>>> = userRepository.getUsers()
12+
operator fun invoke(): Flow<Either<UserError, List<User>>> = userRepository.observeUsers()
1313
}

domain/src/test/java/com/hoc/flowmvi/domain/UseCaseTest.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.hoc.flowmvi.domain.model.User
66
import com.hoc.flowmvi.domain.model.UserError
77
import com.hoc.flowmvi.domain.repository.UserRepository
88
import com.hoc.flowmvi.domain.usecase.AddUserUseCase
9-
import com.hoc.flowmvi.domain.usecase.GetUsersUseCase
9+
import com.hoc.flowmvi.domain.usecase.ObserveUsersUseCase
1010
import com.hoc.flowmvi.domain.usecase.RefreshGetUsersUseCase
1111
import com.hoc.flowmvi.domain.usecase.RemoveUserUseCase
1212
import com.hoc.flowmvi.domain.usecase.SearchUsersUseCase
@@ -60,7 +60,7 @@ class UseCaseTest {
6060
val coroutineRule = TestCoroutineDispatcherRule()
6161

6262
private lateinit var userRepository: UserRepository
63-
private lateinit var getUsersUseCase: GetUsersUseCase
63+
private lateinit var observeUsersUseCase: ObserveUsersUseCase
6464
private lateinit var refreshUseCase: RefreshGetUsersUseCase
6565
private lateinit var removeUserUseCase: RemoveUserUseCase
6666
private lateinit var addUserUseCase: AddUserUseCase
@@ -72,7 +72,7 @@ class UseCaseTest {
7272
fun setup() {
7373
userRepository = mockk()
7474

75-
getUsersUseCase = GetUsersUseCase(userRepository)
75+
observeUsersUseCase = ObserveUsersUseCase(userRepository)
7676
refreshUseCase = RefreshGetUsersUseCase(userRepository)
7777
removeUserUseCase = RemoveUserUseCase(userRepository)
7878
addUserUseCase = AddUserUseCase(userRepository)
@@ -86,25 +86,25 @@ class UseCaseTest {
8686
}
8787

8888
@Test
89-
fun test_getUsersUseCase_whenSuccess_emitsUsers() =
89+
fun test_observeUsersUseCase_whenSuccess_emitsUsers() =
9090
runTest {
9191
val usersRight = USERS.right()
92-
every { userRepository.getUsers() } returns flowOf(usersRight)
92+
every { userRepository.observeUsers() } returns flowOf(usersRight)
9393

94-
val result = getUsersUseCase()
94+
val result = observeUsersUseCase()
9595

96-
verify { userRepository.getUsers() }
96+
verify { userRepository.observeUsers() }
9797
assertEquals(usersRight, result.first())
9898
}
9999

100100
@Test
101-
fun test_getUsersUseCase_whenError_throwsError() =
101+
fun test_observeUsersUseCase_whenError_throwsError() =
102102
runTest {
103-
every { userRepository.getUsers() } returns flowOf(errorLeft)
103+
every { userRepository.observeUsers() } returns flowOf(errorLeft)
104104

105-
val result = getUsersUseCase()
105+
val result = observeUsersUseCase()
106106

107-
verify { userRepository.getUsers() }
107+
verify { userRepository.observeUsers() }
108108
assertEquals(errorLeft, result.first())
109109
}
110110

feature-main/src/main/java/com/hoc/flowmvi/ui/main/MainVM.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.hoc.flowmvi.ui.main
33
import androidx.lifecycle.viewModelScope
44
import arrow.core.flatMap
55
import com.hoc.flowmvi.core.selfReferenced
6-
import com.hoc.flowmvi.domain.usecase.GetUsersUseCase
6+
import com.hoc.flowmvi.domain.usecase.ObserveUsersUseCase
77
import com.hoc.flowmvi.domain.usecase.RefreshGetUsersUseCase
88
import com.hoc.flowmvi.domain.usecase.RemoveUserUseCase
99
import com.hoc.flowmvi.mvi_base.AbstractMviViewModel
@@ -33,7 +33,7 @@ import timber.log.Timber
3333
@FlowPreview
3434
@ExperimentalCoroutinesApi
3535
class MainVM(
36-
private val getUsersUseCase: GetUsersUseCase,
36+
private val observeUsersUseCase: ObserveUsersUseCase,
3737
private val refreshGetUsers: RefreshGetUsersUseCase,
3838
private val removeUser: RemoveUserUseCase,
3939
) : AbstractMviViewModel<ViewIntent, ViewState, SingleEvent>() {
@@ -78,7 +78,7 @@ class MainVM(
7878
//region Processors
7979
private fun Flow<ViewIntent>.toUserChangeFlow(): Flow<PartialStateChange.Users> {
8080
val userChanges =
81-
defer(getUsersUseCase::invoke)
81+
defer { observeUsersUseCase() }
8282
.onEach { either -> Timber.tag(logTag).d("Emit users.size=${either.map { it.size }}") }
8383
.map { result ->
8484
result.fold(

0 commit comments

Comments
 (0)