Skip to content

Instantly share code, notes, and snippets.

@WendyYanto
Last active May 14, 2021 15:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save WendyYanto/ca42b296a3c35f8dc4bd7abf41b60673 to your computer and use it in GitHub Desktop.
Save WendyYanto/ca42b296a3c35f8dc4bd7abf41b60673 to your computer and use it in GitHub Desktop.
class RxJavaUnitTest {
companion object {
private const val USER_ID = "USER_ID"
private const val NAME = "John Doe"
private const val AGE = 20
private const val EMPTY = ""
}
@Test
fun getUserWithGoodErrorHandling() {
getUserId()
.doOnNext{ println("get user") }
.flatMap(this::getUser)
.doOnNext{ println("done get user") }
.doOnNext{ println("saving user") }
.flatMap(this::saveUser)
.doOnNext{ println("done saving user") }
.subscribe({ user ->
println(user)
}, {
println(it.message)
})
}
private fun getUserId(): Observable<String> {
return Observable.fromCallable {
EMPTY
}
}
private fun getUser(id: String): Observable<User> {
if (id == EMPTY) {
throw Exception("User ID is invalid")
}
val user = User(
id = id,
name = NAME,
age = AGE
)
return Observable.fromCallable { user }
}
private fun saveUser(user: User): Observable<User> {
// Perform save to user
return Observable.fromCallable { user }
}
}
data class User(
val id: String,
val name: String,
val age: Int
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment