adding tests around the result _on_ helper callbacks
This commit is contained in:
parent
b25fd4a540
commit
d71d37c1ce
|
@ -29,6 +29,8 @@ import org.junit.Test
|
|||
|
||||
private const val A_VALID_PASSWORD = "11111111"
|
||||
private const val A_FORMATTED_ERROR_MESSAGE = "error message"
|
||||
private const val ANOTHER_FORMATTED_ERROR_MESSAGE = "error message 2"
|
||||
private val AN_ERROR = RuntimeException()
|
||||
|
||||
class LoginErrorParserTest {
|
||||
|
||||
|
@ -98,5 +100,75 @@ class LoginErrorParserTest {
|
|||
passwordError = R.string.auth_invalid_login_param_space_in_password.toTestString()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `given an error result with no known errors, then is unknown`() {
|
||||
val errorResult = LoginErrorParser.LoginErrorResult(AN_ERROR, usernameOrIdError = null, passwordError = null)
|
||||
val captures = Captures(expectUnknownError = true)
|
||||
|
||||
errorResult.callOnMethods(captures)
|
||||
|
||||
captures.unknownResult shouldBeEqualTo AN_ERROR
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `given an error result with only username error, then is username or id error`() {
|
||||
val errorResult = LoginErrorParser.LoginErrorResult(AN_ERROR, usernameOrIdError = A_FORMATTED_ERROR_MESSAGE, passwordError = null)
|
||||
val captures = Captures(expectUsernameOrIdError = true)
|
||||
|
||||
errorResult.callOnMethods(captures)
|
||||
|
||||
captures.usernameOrIdError shouldBeEqualTo A_FORMATTED_ERROR_MESSAGE
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `given an error result with only password error, then is password error`() {
|
||||
val errorResult = LoginErrorParser.LoginErrorResult(AN_ERROR, usernameOrIdError = null, passwordError = A_FORMATTED_ERROR_MESSAGE)
|
||||
val captures = Captures(expectPasswordError = true)
|
||||
|
||||
errorResult.callOnMethods(captures)
|
||||
|
||||
captures.passwordError shouldBeEqualTo A_FORMATTED_ERROR_MESSAGE
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `given an error result with username and password error, then triggers both username and password error`() {
|
||||
val errorResult = LoginErrorParser.LoginErrorResult(
|
||||
AN_ERROR,
|
||||
usernameOrIdError = A_FORMATTED_ERROR_MESSAGE,
|
||||
passwordError = ANOTHER_FORMATTED_ERROR_MESSAGE
|
||||
)
|
||||
val captures = Captures(expectPasswordError = true, expectUsernameOrIdError = true)
|
||||
|
||||
errorResult.callOnMethods(captures)
|
||||
|
||||
captures.usernameOrIdError shouldBeEqualTo A_FORMATTED_ERROR_MESSAGE
|
||||
captures.passwordError shouldBeEqualTo ANOTHER_FORMATTED_ERROR_MESSAGE
|
||||
}
|
||||
}
|
||||
|
||||
private fun LoginErrorParser.LoginErrorResult.callOnMethods(captures: Captures) {
|
||||
onUnknown(captures.onUnknown)
|
||||
onUsernameOrIdError(captures.onUsernameOrIdError)
|
||||
onPasswordError(captures.onPasswordError)
|
||||
}
|
||||
|
||||
private class Captures(
|
||||
val expectUnknownError: Boolean = false,
|
||||
val expectUsernameOrIdError: Boolean = false,
|
||||
val expectPasswordError: Boolean = false,
|
||||
) {
|
||||
var unknownResult: Throwable? = null
|
||||
var usernameOrIdError: String? = null
|
||||
var passwordError: String? = null
|
||||
|
||||
val onUnknown: (Throwable) -> Unit = {
|
||||
if (expectUnknownError) unknownResult = it else throw IllegalStateException("Not expected to be called")
|
||||
}
|
||||
val onUsernameOrIdError: (String) -> Unit = {
|
||||
if (expectUsernameOrIdError) usernameOrIdError = it else throw IllegalStateException("Not expected to be called")
|
||||
}
|
||||
val onPasswordError: (String) -> Unit = {
|
||||
if (expectPasswordError) passwordError = it else throw IllegalStateException("Not expected to be called")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue