Skip to content

Commit 2dcf3ab

Browse files
carbaj03android10
authored andcommitted
Refactored use case to improve readability (android10#37)
Replace execute function by invoke operator Moved onResult function as a last parameter Fixed all test
1 parent 2061875 commit 2dcf3ab

File tree

5 files changed

+9
-9
lines changed

5 files changed

+9
-9
lines changed

app/src/main/kotlin/com/fernandocejas/sample/core/interactor/UseCase.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ abstract class UseCase<out Type, in Params> where Type : Any {
3434

3535
abstract suspend fun run(params: Params): Either<Failure, Type>
3636

37-
fun execute(onResult: (Either<Failure, Type>) -> Unit, params: Params) {
37+
operator fun invoke(params: Params, onResult: (Either<Failure, Type>) -> Unit = {}) {
3838
val job = async(CommonPool) { run(params) }
39-
launch(UI) { onResult.invoke(job.await()) }
39+
launch(UI) { onResult(job.await()) }
4040
}
4141

4242
class None

app/src/main/kotlin/com/fernandocejas/sample/features/movies/MovieDetailsViewModel.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ class MovieDetailsViewModel
2626

2727
var movieDetails: MutableLiveData<MovieDetailsView> = MutableLiveData()
2828

29-
fun loadMovieDetails(movieId: Int) {
30-
getMovieDetails.execute({ it.either(::handleFailure, ::handleMovieDetails) }, Params(movieId))
31-
}
29+
fun loadMovieDetails(movieId: Int) =
30+
getMovieDetails(Params(movieId)) { it.either(::handleFailure, ::handleMovieDetails) }
3231

33-
fun playMovie(url: String) = playMovie.execute({}, PlayMovie.Params(url))
32+
fun playMovie(url: String) =
33+
playMovie(PlayMovie.Params(url))
3434

3535
private fun handleMovieDetails(movie: MovieDetails) {
3636
this.movieDetails.value = MovieDetailsView(movie.id, movie.title, movie.poster,

app/src/main/kotlin/com/fernandocejas/sample/features/movies/MoviesViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class MoviesViewModel
2525

2626
var movies: MutableLiveData<List<MovieView>> = MutableLiveData()
2727

28-
fun loadMovies() = getMovies.execute({ it.either(::handleFailure, ::handleMovieList) }, None())
28+
fun loadMovies() = getMovies(None()) { it.either(::handleFailure, ::handleMovieList) }
2929

3030
private fun handleMovieList(movies: List<Movie>) {
3131
this.movies.value = movies.map { MovieView(it.id, it.poster) }

app/src/test/kotlin/com/fernandocejas/sample/core/interactor/UseCaseTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class UseCaseTest : AndroidTest() {
4343
val params = MyParams("TestParam")
4444
val onResult = { myResult: Either<Failure, MyType> -> result = myResult }
4545

46-
runBlocking { useCase.execute(onResult, params) }
46+
runBlocking { useCase(params, onResult) }
4747

4848
result shouldEqual Right(MyType(TYPE_TEST))
4949
}

app/src/test/kotlin/com/fernandocejas/sample/features/movies/PlayMovieTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class PlayMovieTest : AndroidTest() {
3939
@Test fun `should play movie trailer`() {
4040
val params = PlayMovie.Params(VIDEO_URL)
4141

42-
playMovie.execute({}, params)
42+
playMovie(params)
4343

4444
verify(navigator).openVideo(context, VIDEO_URL)
4545
}

0 commit comments

Comments
 (0)