Skip to content

Commit

Permalink
use RxJava2CallAdapterFactory #16
Browse files Browse the repository at this point in the history
implement RxJava2CallAdapterFactory whit retrofit
  • Loading branch information
andresserranodev committed Jun 7, 2018
1 parent 29d0c5c commit fa7d236
Show file tree
Hide file tree
Showing 9 changed files with 24 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.puzzlebench.clean_marvel_kotlin.presentation.mvp

import com.puzzlebench.cmk.domain.usecase.GetCharacterRepositoryUseCase
import com.puzzlebench.cmk.domain.usecase.GetCharacterServiceUseCase
import com.puzzlebench.clean_marvel_kotlin.presentation.base.Presenter
import com.puzzlebench.cmk.domain.model.Character
import com.puzzlebench.cmk.domain.usecase.GetCharacterRepositoryUseCase
import com.puzzlebench.cmk.domain.usecase.GetCharacterServiceUseCase
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.puzzlebench.cmk.domain.service.CharacterServices
import com.puzzlebench.cmk.domain.usecase.GetCharacterRepositoryUseCase
import com.puzzlebench.cmk.domain.usecase.GetCharacterServiceUseCase
import io.reactivex.Observable
import io.reactivex.Single
import io.reactivex.android.plugins.RxAndroidPlugins
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
Expand Down Expand Up @@ -48,7 +49,7 @@ class CharacterPresenterTest {
val itemsCharacters = listOf(1..5).map {
Mockito.mock(Character::class.java)
}
val observable = Observable.just(itemsCharacters)
val observable = Single.just(itemsCharacters)
Mockito.`when`(getCharacterServiceUseCase.invoke()).thenReturn(observable)
Mockito.`when`(getCharacterRepositoryUseCase.invoke()).thenReturn(emptyList())
characterPresenter.init()
Expand All @@ -63,7 +64,7 @@ class CharacterPresenterTest {

@Ignore
fun reposeWithError() {
Mockito.`when`(getCharacterServiceUseCase.invoke()).thenReturn(Observable.error(Exception("")))
Mockito.`when`(getCharacterServiceUseCase.invoke()).thenReturn(Single.error(Exception("")))
characterPresenter.init()
verify(view).init()
verify(characterServiceImp).getCharacters()
Expand All @@ -77,7 +78,7 @@ class CharacterPresenterTest {
val itemsCharacters = listOf(1..5).map {
Mockito.mock(Character::class.java)
}
val observable = Observable.just(itemsCharacters)
val observable = Single.just(itemsCharacters)
Mockito.`when`(getCharacterServiceUseCase.invoke()).thenReturn(observable)
characterPresenter.init()
verify(view).init()
Expand All @@ -91,7 +92,7 @@ class CharacterPresenterTest {
@Ignore
fun reposeWithoutItemToShow() {
val itemsCharacters = emptyList<Character>()
val observable = Observable.just(itemsCharacters)
val observable = Single.just(itemsCharacters)
Mockito.`when`(getCharacterServiceUseCase.invoke()).thenReturn(observable)
characterPresenter.init()
verify(view).init()
Expand Down
7 changes: 3 additions & 4 deletions data/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,12 @@ dependencies {
generalDependencies.appSupport,
generalDependencies.kotlin



testImplementation generalTestDependencies.junit,
generalTestDependencies.kotlinTest

compile dataDependencies.retrofit,
dataDependencies.retrofitConverter
implementation dataDependencies.retrofit,
dataDependencies.retrofitConverter,
dataDependencies.retrofitAdapterRX

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,13 @@ import com.puzzlebench.cmk.data.mapper.service.CharacterMapperService
import com.puzzlebench.cmk.data.service.api.MarvelApi
import com.puzzlebench.cmk.domain.model.Character
import com.puzzlebench.cmk.domain.service.CharacterServices
import io.reactivex.Observable
import io.reactivex.Single


class CharacterServicesImpl(private val api: MarvelResquestGenerator = MarvelResquestGenerator(), private val mapper: CharacterMapperService = CharacterMapperService()) : CharacterServices {
override fun getCharacters(): Observable<List<Character>> {
return Observable.create { subscriber ->
val callResponse = api.createService(MarvelApi::class.java).getCharacter()
val response = callResponse.execute()

if (response.isSuccessful) {
subscriber.onNext(mapper.transform(response.body()!!.data!!.characters))
subscriber.onComplete()
} else {
subscriber.onError(Throwable(response.message()))
}
override fun getCharacters(): Single<List<Character>> {
return api.createService(MarvelApi::class.java).getCharacter().flatMap {
Single.just(mapper.transform(it.data!!.characters))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.puzzlebench.cmk.data.service
import com.puzzlebench.cmk.data.BuildConfig
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory


Expand All @@ -28,6 +29,7 @@ class MarvelResquestGenerator {

private val builder = Retrofit.Builder()
.baseUrl(BuildConfig.MARVEL_BASE_URL)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())

fun <S> createService(serviceClass: Class<S>): S {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ package com.puzzlebench.cmk.data.service.api
import com.puzzlebench.cmk.data.service.response.CharacterResponse
import com.puzzlebench.cmk.data.service.response.DataBaseResponse
import com.puzzlebench.cmk.data.service.response.MarvelBaseResponse
import io.reactivex.Single
import retrofit2.Call
import retrofit2.http.GET
import java.util.*

interface MarvelApi {
@GET("/v1/public/characters")
fun getCharacter(): Call<MarvelBaseResponse<DataBaseResponse<ArrayList<CharacterResponse>>>>
fun getCharacter(): Single<MarvelBaseResponse<DataBaseResponse<ArrayList<CharacterResponse>>>>
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.puzzlebench.cmk.domain.service

import com.puzzlebench.cmk.domain.model.Character
import io.reactivex.Observable
import io.reactivex.Single

interface CharacterServices {
fun getCharacters(): Observable<List<Character>>
fun getCharacters(): Single<List<Character>>
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ package com.puzzlebench.cmk.domain.usecase

import com.puzzlebench.cmk.domain.model.Character
import com.puzzlebench.cmk.domain.service.CharacterServices
import io.reactivex.Observable
import io.reactivex.Single

open class GetCharacterServiceUseCase(private val characterServiceImp: CharacterServices) {

open operator fun invoke(): Observable<List<Character>> = characterServiceImp.getCharacters()
open operator fun invoke(): Single<List<Character>> = characterServiceImp.getCharacters()
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.puzzlebench.cmk.domain.usecase
import com.puzzlebench.cmk.domain.model.Character
import com.puzzlebench.cmk.domain.service.CharacterServices
import io.reactivex.Observable
import io.reactivex.Single
import org.junit.Before
import org.junit.Test
import org.mockito.Mockito
Expand All @@ -17,7 +18,7 @@ class GetCharacterServiceUseCaseTest {
val characterList = listOf(1..5).map {
Mockito.mock(Character::class.java)
}
val observable = Observable.just(characterList)
val observable = Single.just(characterList)
characterServiceImp = mock(CharacterServices::class.java)
`when`(characterServiceImp.getCharacters()).thenReturn(observable)

Expand Down

0 comments on commit fa7d236

Please sign in to comment.