Skip to content

Instantly share code, notes, and snippets.

View sanogueralorenzo's full-sized avatar
👋
Hello everyone!

Mario sanogueralorenzo

👋
Hello everyone!
View GitHub Profile
apply plugin: 'io.gitlab.arturbosch.detekt'
detekt {
config = files("$rootDir/default-detekt-config.yml")
filters = ".*build.*,.*/resources/.*,.*/tmp/.*"
//Optional baseline, uncomment & run gradle command detektBaseline to exclude existing issues
//baseline = file("detekt-baseline.xml")
}
class App : Application() {
override fun onCreate() {
super.onCreate()
Posts.init()
}
}
object Posts {
fun init() = loadKoinModules(
viewModelModule,
useCaseModule,
repositoryModule,
networkModule,
cacheModule
)
}
val viewModelModule: Module = module {
viewModel { PostListViewModel(usersPostsUseCase = get()) }
viewModel { PostDetailsViewModel(userPostUseCase = get(), commentsUseCase = get()) }
}
val useCaseModule: Module = module {
factory { UsersPostsUseCase(userRepository = get(), postRepository = get()) }
factory { UserPostUseCase(userRepository = get(), postRepository = get()) }
factory { CommentsUseCase(commentRepository = get()) }
}
allprojects {
apply from: "$rootDir/ktlint.gradle"
}
repositories {
jcenter()
}
configurations {
ktlint
}
dependencies {
ktlint "com.github.shyiko:ktlint:0.29.0"
apply from: "$rootDir/common-android-library.gradle"
dependencies {
implementation project(Modules.cache)
implementation project(Modules.network)
implementation project(Modules.presentation)
implementation Libraries.koin
implementation Libraries.rxkotlin
implementation SupportLibraries.appcompat
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion Versions.compileSdk
defaultConfig {
minSdkVersion Versions.minSdk
targetSdkVersion Versions.targetSdk
fun <T> MutableLiveData<Resource<T>>.setSuccess(data: T? = null) =
postValue(Resource(ResourceState.SUCCESS, data))
fun <T> MutableLiveData<Resource<T>>.setLoading() =
postValue(Resource(ResourceState.LOADING, value?.data))
fun <T> MutableLiveData<Resource<T>>.setError(message: String? = null) =
postValue(Resource(ResourceState.ERROR, value?.data, message))
class PostRepositoryImplTest {
private lateinit var repository: PostRepositoryImpl
private val mockCacheDataSource: PostCacheDataSource = mock()
private val mockRemoteDataSource: PostRemoteDataSource = mock()
private val postId = post.id
private val cacheItem = post.copy(title = "cache")